[問題] call by pointer

看板C_and_CPP (C/C++)作者 (不下棋)時間10年前 (2015/09/28 21:45), 編輯推噓2(202)
留言4則, 4人參與, 最新討論串1/2 (看更多)
開發平台(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

09/28 21:49, , 1F
因為那樣寫是修改位址 要寫*y = g_One;
09/28 21:49, 1F

09/28 21:49, , 2F
y只是個stack,用完即丟的
09/28 21:49, 2F

09/28 23:02, , 3F
是不是要用雙重指標?
09/28 23:02, 3F

09/29 11:36, , 4F
foo_2 所取的pointer為是經過複製的 pointer
09/29 11:36, 4F
文章代碼(AID): #1M2KHe4q (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
文章代碼(AID): #1M2KHe4q (C_and_CPP)