#include <iostream>
using namespace std;
char* fun()
{
char *p="Hello cjc";
return p;
}
char* fun1()
{
char p[]="Hello xiao cjc";
return p;
}
int main(void)
{
char* str1,*str2;
str1=fun();
str2=fun1();
printf("fun1 print out\n%s\n",str1);
printf("fun2 print out\n%s\n",str2);
system("pause");
return 0;
}
由以上的结果可知,当在fun()中初始化字符串时,字符串存储在常量区,而fun1()中的字符串则被存储在堆栈当中,此时返回的局部变量指针为野指针。可以这样理解,fun中是取常量字符串的地址为字符串指针赋值,而fun1中是声明了一个字符数组并用字符串对它进行初始化。