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的值都是正确的结果, 这很奇怪