作者okstephen1 (ㄌㄩㄝ)
看板Examination
標題[考題] 程式語言 96交通升資
時間Sun Mar 30 23:34:18 2014
[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處
int *f(int x)
{
int y;
y = x + 10;
return &y;
}
int g(int y)
{
int x;
x = y – 10;
return x;
}
void main( )
{
int *x, y;
x = f(10);
y = g(*x);
printf(“%d %d\n”, *x, y);
}
執行結果為何
小弟認為f() 的return &y是不合理的
y是區域變數lifetime只有到f()結束
回傳給main指定給x不太合理
這樣不就變成dangling pointer
請賜教
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.71.1.177
※ 文章網址: http://www.ptt.cc/bbs/Examination/M.1396193663.A.4EF.html
推 gary22204:我也是這麼想,不過如果硬要湊輸出的話不知道是不是0 10 03/30 23:44
推 Sunofgod:這個要畫圖才比較好理解 03/30 23:44
→ gary22204:打錯0 -10,因為x指向的地方被清掉,只好填個0繼續算 03/30 23:45
→ okstephen1:S大可以說說嗎 書上給的答案是10 10 03/31 00:00
推 Sunofgod:我原也以為x指向地方會被清掉 但實際上不會 03/31 00:07
推 lingpxs:dangling point本身不是錯誤 是OS認為存取非配置記憶體才 04/04 03:31
→ lingpxs:出現的錯 04/04 03:31