看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C++ 問題(Question): //global variable int g_One=1; void foo(int *x) { (*x)++; // 指向,並加1 } void foo_2(int *y) { y = &g_One; } int main() { int x1 = 5; foo(&x1); std::cout<<x1<<std::endl; //x1的值為6 foo_2(&x1); std::cout<<x1<<std::endl; //x1的值還是為6,沒有變成1 system("pause"); return 0; } 我想問一下,為什麼執行foo(&x1)後,區域變數int *x的值有回傳給x1 而執行foo_2(&x1)後,區域變數int *y的值卻沒回傳給x1呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.83.23.227 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1443447912.A.134.html
x000032001: 因為那樣寫是修改位址 要寫*y = g_One; 09/28 21:49
stupid0319: y只是個stack,用完即丟的 09/28 21:49
chuegou: 是不是要用雙重指標? 09/28 23:02
Ninja5566: foo_2 所取的pointer為是經過複製的 pointer 09/29 11:36