C++返回栈上的数组(局部变量)问题探索
生活随笔
收集整理的這篇文章主要介紹了
C++返回栈上的数组(局部变量)问题探索
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
char* teststr() {char s[] = "hello"; return s;
}void main()
{char* str = teststr();char c1 = str[0]; //hchar c2 = str[1]; //echar c3 = str[2]; //lchar c4 = str[3]; //lchar c5 = str[4]; //ochar c6 = str[5]; //\0char* s2 = str;printf(str);
}
根據理論:s是棧上數組,是個局部變量,出了函數后將變得無效,如上程序,printf(str)是亂碼,驗證了理論。
同樣,在單步調試狀態下查看str的值也是亂碼。
但,若去掉 printf(str)這一行,則在單步調試下查看str和s2的值都是正確的結果,?這很奇怪
?
PS,字符串常量與變量
char* teststr() {char s[] = "hello"; //字符串變量return s; }char* teststr2() {char* s = "hello"; //字符串常量return s; }?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的C++返回栈上的数组(局部变量)问题探索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++编译-链接错误集合
- 下一篇: 坐标变换,空间变换的本质