C++返回栈上的数组(局部变量)问题探索
char* teststr() { char s[] = "hello"; return s; } void main() { char* str = teststr(); char c1 = str[0]; //h char c2 = str[1]; //e char c3 = str[2]; //l char c4 = str[3]; //l char c5 = str[4]; //o char c6 = str[5]; //\0 char* s2 = str; printf(str); } 根据理论:s是栈上数组,是个局部变量,出了函数后将变得无效,如上程序,printf(str)是乱码,验证了理论。 同样,在单步调试状态下查看str的值也是乱码。 但,若去掉 printf(str)这一行,则在单步调试下查看str和s2的值都是正确的结果, 这很奇怪 来源: https://www.cnblogs.com/timeObjserver/p/11358126.html