看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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