作者supercygnus (......)
看板C_and_CPP
標題[問題] 回傳區域變數的位址
時間Mon Mar 11 17:18:39 2013
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEV C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
回傳區域變數的位址
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
#include<iostream>
using namespace std;
int *f(int x){
int y;
y=x+10;
return &y;
}
int g(int y){
int x;
x=y-10;;
return x;
}
int main(){
int *x,y;
x=f(10);
y=g(*x);
cout<<*x<<" "<<y<<endl;
system("pause");
return 0;
}
補充說明(Supplement):
執行結果是
10 10
*x為什麼是10呢?
編譯的時候有出現回傳區域變數位址的警告
我預期*x是20
到底哪裏出錯了呢~?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.246.201.24
→ pcyu16:因為你回傳區域變數位置 程式結果基本上是無意義的 03/11 17:31
→ pcyu16:不管結果是 10, 還是 20, 或是發生 error 都是有可能的 03/11 17:31
→ pcyu16:置底新手十誡第五條看一下 03/11 17:32
→ supercygnus:喔喔 因為是書本上的題目,他題目就直接問執行結果 03/11 17:37
推 purpose:好書 03/11 18:09
推 leiyan:你想問的問題我想就是變數名不要取一樣 否則會搞混 03/11 19:08
→ diabloevagto:那本書啊... 03/11 19:25