程式語言 96交通升資 - 考試

Table of Contents

[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處


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

請賜教

謝謝

--

All Comments

Todd Johnson avatarTodd Johnson2014-04-04
我也是這麼想,不過如果硬要湊輸出的話不知道是不是0 10
Hazel avatarHazel2014-04-07
這個要畫圖才比較好理解
Catherine avatarCatherine2014-04-08
打錯0 -10,因為x指向的地方被清掉,只好填個0繼續算
Irma avatarIrma2014-04-09
S大可以說說嗎 書上給的答案是10 10
William avatarWilliam2014-04-13
我原也以為x指向地方會被清掉 但實際上不會
Kumar avatarKumar2014-04-13
dangling point本身不是錯誤 是OS認為存取非配置記憶體才
出現的錯