引入問題: VS2015 C++ 函數中的 局部變量,調用完函數後局部變量的值是否不再存在?
困惑:
method() 函數中 數組outbuff[50]是個局部變量,在主函數調用完method() 函數後,數組outbuff[50] - 這個局部變量存放在棧區應該自動釋放掉的,釋放之後它存儲的值應該是混亂的, 爲什麼在主函數中卻能夠訪問到正確的值?向各位 求助,提前謝謝了。
解決問題:
先了解下函數流程:
因此,綜合具體代碼來看:
對於printf_s("%s\n", a); 因爲a是在局部變量outbuff[50]沒有被修改之前strcpy()過來的,所以能夠正確得到結果;
對於printf_s("%s\n", b); 調用printf_s時,該函數內部對局部變量進行初始化,局部變量outbuff[50]中的值被編譯器進行默認的初始化修改, 所以會輸出編譯器默認初始化的字符串。
那麼子函數中返回局部變量的做法是否正確呢?答案是絕不對可以的!因爲這樣做就造成返回的局部變量其內容是不可預估的。
更多,可參考我的貼子:
https://bbs.csdn.net/topics/394816338