2010年10月19日 星期二

C++ called by reference

參考http://caterpillar.onlyfun.net/Gossip/CppGossip/PassBy.html


int main(){
int x = 10;
printf("%d\n", inc(x));
printf("%d\n", x);

return 0;
}

int inc(int n){
n = n+1;
return n;
}


若程式這樣寫,則印出來為:
11
10

因為n與x是不同的變數(called by value)
==============================================
int main(){
int x = 10;
printf("%d\n", inc(x));
printf("%d\n", x);

return 0;
}

int inc(int *n){
*n = *n+1;
return *n;
}

使用指標的方式輸出為:
11
11

========================================
int main(){
int x = 10;
printf("%d\n", inc(x));
printf("%d\n", x);

return 0;
}

int inc(int &n){
n = n+1;
return n;
}
若在function的參數中加上&,則代表int &n = x
(n為x的一個別名,改變n,x會一起變)

這樣輸出也是:
11
11


=========================================
若不准傳進function的參數遭到修改的話,可以使用const
int my_function(const int &in){
...
}


沒有留言: