char *GetMemory()
{
char p[] = "hello world";
return p;
}
void main()
{
char *str = NULL;
str = GetMemory();
printf(str);
}
打印结果为乱码,但是改为下面就可以正常输出:
char *GetMemory(char *sssss)
{
char p[] = "hello world";
return p;
}
void main()
{
char *str = NULL;
char *s="111111111\n";
str = GetMemory(s);
printf(str);
}只是跟调用的函数增加了一个参数,一个没有用到的参数,为什么就能正常输出呢?
求解释
知道了:原因在于
char *GetMemory()
{
char p[] = "hello world";--》此处不能使用数组,应改为char *p然后分配空间
return p;
}
数组是分配的栈内存,在函数结束时,会被销毁,所以就乱码了,改为字符指针就不会出现这个问题了