作者wu110011 (不下棋)
看板C_and_CPP
標題[問題] call by pointer
時間Mon Sep 28 21:45:10 2015
開發平台(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