close

傳值傳址這通常會分不太清楚,不過效果差異很大

像以下的範例 

int main()
{
     int aNUM=10;
     
     valueFun(aNUM); 
     cout<< aNUM<<"\n"; 
     addFun(aNUM); 
     cout<< aNUM<<"\n";     
} 
void valueFun(int num)
{
 num=20;     
} 
void addFun(int &num)
{
  num=30;   

前面的傳值部份他只是把數值傳過去,在function裡面更改數值之後

並沒有把實際的值改變,因此在下一行裡面印出的值就會是原本的10

接下來的傳址部份,它傳遞的方式是直接傳輸記憶體位址

所以在裡面更改的值會直接的寫入記憶體位址相對應的值

 

 

ps.在這裡順便解釋一下指標好了
*a這代表一個指標,通常來說我會把他當成是一個箭頭
指向某一個地方,用法通常是指向一個矩陣的頭或是一個位址

相對的,如果我們想知道某個變數或是某個值的位址
作法是加上一個&
EX:&a 這個意思就是a這個變數的記憶體位址 

arrow
arrow
    全站熱搜

    szss8765 發表在 痞客邦 留言(0) 人氣()