char* strA() {
char str[] = "hello world";
return str;
}
这里char str[] = "hello world"分配的是一个局部数组,当函数调用完成,str就无意义了。另外局部数组是局部变量,放在栈中,数据是可以修改的,如str[0] = 't'。
若定义char* str = "hello world"则分配的是一个全局数组,对应内存中的全局区域。字符串常量保存在只读的数据段,所以这个定义还有问题,用最新的g++编译会有warning,应该const char* str = "hello world"来说明我不会修改它。因而对其数据的修改如*std = 't'是不可以的。