[問題] 函數結束時 區域變數會跟著清空嗎?
請先看問題程式碼 這是某考題
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); }
印出來的結果 我筆算 和 程式跑出來 都是--> 10,10
但老師在解題是 認為 二者答案都是 不確定 依各編譯器實作而自訂
他的觀念是 function f 和 g 在被呼叫完之後 區域變數就清空
所以當main在運算 *x 還有 y的時候 以無法參考到原有的記憶體位置
聽他的觀念 覺得很合理 但實際上用Visual C++跑 又不是這麼回事
請有經驗的版友 替我解惑 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.28.78
推
04/20 00:00, , 1F
04/20 00:00, 1F
→
04/20 00:02, , 2F
04/20 00:02, 2F
→
04/20 00:03, , 3F
04/20 00:03, 3F
→
04/20 00:03, , 4F
04/20 00:03, 4F
→
04/20 00:04, , 5F
04/20 00:04, 5F
→
04/20 00:05, , 6F
04/20 00:05, 6F
→
04/20 00:06, , 7F
04/20 00:06, 7F
推
04/20 00:10, , 8F
04/20 00:10, 8F
→
04/20 00:11, , 9F
04/20 00:11, 9F
→
04/20 00:23, , 10F
04/20 00:23, 10F
→
04/20 00:24, , 11F
04/20 00:24, 11F