[考題] 程式語言 96交通升資

看板Examination作者 (ㄌㄩㄝ)時間10年前 (2014/03/30 23:34), 編輯推噓4(403)
留言7則, 4人參與, 最新討論串1/3 (看更多)
[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處 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

03/30 23:44, , 1F
我也是這麼想,不過如果硬要湊輸出的話不知道是不是0 10
03/30 23:44, 1F

03/30 23:44, , 2F
這個要畫圖才比較好理解
03/30 23:44, 2F

03/30 23:45, , 3F
打錯0 -10,因為x指向的地方被清掉,只好填個0繼續算
03/30 23:45, 3F

03/31 00:00, , 4F
S大可以說說嗎 書上給的答案是10 10
03/31 00:00, 4F

03/31 00:07, , 5F
我原也以為x指向地方會被清掉 但實際上不會
03/31 00:07, 5F

04/04 03:31, , 6F
dangling point本身不是錯誤 是OS認為存取非配置記憶體才
04/04 03:31, 6F

04/04 03:31, , 7F
出現的錯
04/04 03:31, 7F
文章代碼(AID): #1JE3b_Jl (Examination)
文章代碼(AID): #1JE3b_Jl (Examination)