同意2楼和4楼说的;
char *GetString(void){
char *p = "hello world !" ;
return p ;
}
p是一个指针,指向字符串常量;这个地址是操作系统分配的;不在栈空间里面;
char *GetString(void){
char p[] = "hello world !" ;
return p ;
}
这个p数组定义时被初始化,是一个14个字节的字符数组,但是他的空间是在栈中分配的,作用域在函数中,离开了函数,他的地址就不能被访问了!
具体的话,楼主可以自己编一个小程序看看!
char *GetString1(void){
char *p = "hello world !" ;
printf("%0x",p);
return p ;
}
char *GetString2(void){
char p[] = "hello world !" ;
printf("%0x",p);
return p ;
}
int main()
{
char *p;
p = GetString1();
printf("%0x",p):
char *p2;
p2 = GetString2();
printf("%0x",p2);
return 1;
}