C++返回栈上的数组(局部变量)问题探索
生活随笔
收集整理的這篇文章主要介紹了
C++返回栈上的数组(局部变量)问题探索
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
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);
}
根據(jù)理論:s是棧上數(shù)組,是個(gè)局部變量,出了函數(shù)后將變得無(wú)效,如上程序,printf(str)是亂碼,驗(yàn)證了理論。
同樣,在單步調(diào)試狀態(tài)下查看str的值也是亂碼。
但,若去掉 printf(str)這一行,則在單步調(diào)試下查看str和s2的值都是正確的結(jié)果,?這很奇怪
?
PS,字符串常量與變量
char* teststr() {char s[] = "hello"; //字符串變量return s; }char* teststr2() {char* s = "hello"; //字符串常量return s; }?
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的C++返回栈上的数组(局部变量)问题探索的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++编译-链接错误集合
- 下一篇: 【转】C++一次读取整个文件