void f(linklist &p)
void f(linklist p)
這兩個有什么區別??
uj5u.com熱心網友回復:
區別大了,前者是地址傳遞(雖然是變相尋址實作的),后者是值傳遞(指標傳遞也屬于值傳遞)LZ測驗一下看看,哪個函式的引數的地址和main函式的變數的地址一樣?
void t1(int &a) { //地址傳遞
printf("%p\n", &a);
}
void t2(int a) { //值傳遞
printf("%p\n", &a);
}
void t3(int *a) { //值傳遞
printf("%p\n", &a);
}
int main(int argc, const char * argv[]) {
int p = 0;
int &p1 = p;
int *p2 = &p;
printf("main: %p\n", &p);
t1(p1);
t2(p);
t3(p2);
return 0;
}
uj5u.com熱心網友回復:
這個是c函式的定義?C里面還能這么定義函式嗎?
c里面沒有參考的說法, &是取地址,但是這個是函式定義階段啊, 只能void( linklist *p);
c++里面void void f(linklist &p);
這是參考,和后者的區別是它等同于把呼叫時候傳參的變數傳遞進去了,而不是變數的值,因此函式里面對p的修改,可以帶回到函式外面; 后后者對p值的修改只在函式內部有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133573.html
標籤:C語言
上一篇:help
下一篇:資料結構
