#include <stdio.h>
char* fun1()
{
char *s="hello";
return s;
}
char* fun2()
{
char s[6]="hello";
return s;
}
main()
{
char *str;
str = fun1();
printf("%s",str);//hello
str = fun2();
printf("%s",str);//garbage value
}
代码的输出是 - 你好和一些垃圾。我不明白虽然 fun1 和 fun2 中的两个变量都是它们各自函数的本地变量,但为什么输出会这样。两个函数调用都返回局部变量的地址,并且返回的地址应该包含垃圾值,这在 fun1 情况下不正确,因为它正在打印“你好”。