[問題] 回傳區域變數的位址

看板C_and_CPP (C/C++)作者 (......)時間13年前 (2013/03/11 17:18), 編輯推噓2(205)
留言7則, 5人參與, 最新討論串1/1
開發平台(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

03/11 17:31, , 1F
因為你回傳區域變數位置 程式結果基本上是無意義的
03/11 17:31, 1F

03/11 17:31, , 2F
不管結果是 10, 還是 20, 或是發生 error 都是有可能的
03/11 17:31, 2F

03/11 17:32, , 3F
置底新手十誡第五條看一下
03/11 17:32, 3F

03/11 17:37, , 4F
喔喔 因為是書本上的題目,他題目就直接問執行結果
03/11 17:37, 4F

03/11 18:09, , 5F
好書
03/11 18:09, 5F

03/11 19:08, , 6F
你想問的問題我想就是變數名不要取一樣 否則會搞混
03/11 19:08, 6F

03/11 19:25, , 7F
那本書啊...
03/11 19:25, 7F
文章代碼(AID): #1HFQ5nia (C_and_CPP)
文章代碼(AID): #1HFQ5nia (C_and_CPP)