看板 Examination 關於我們 聯絡資訊
[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處 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