无论是*p还是p[]都是一个局部变量
但是p[]说明p是一个数组,helloworld是它数组里面的元素,放在数组里面,和数组有同样的地址,在栈里面;都是在调用子函数的时候创建
但是*p只是一个指针,这个函数里所包含的变量只有个指针变量,但是helloworld这个字符串放在哪呢?编译器给指针进行初始化的字符串是一个全局变量,在程序运行之前就已经存在的变量,所以可以显示
下面也是网上讨论比较多的两个程序
char * GetMemory1(void)
{
char *p = "helloworld";
return p;
}
char * GetMemory2(void)
{
char p[] = "helloworld";
return p;
}