常量区进阶(34) 发表于 2014-09-02 | 分类于 语言 ++12345678910char *strA(){ char str[]="hello world"; return str;}char *strA(){ char *str="hello world"; return str;} 首先,指针只有四个字节,无法保持数据,所以定义后会在常量区开辟空间赋值。所以return str返回的是常量区空间(在程序结束后才会被释放) 这也解释了第一个为什么返回乱码了。 然后继续再来看这一句:++12345678910111213141516171819int* strr(){ int a = 3; int *d = &a; return d;}int main(int argc, char* argv[]) { int* d = strr(); cout << *d << endl; int* q1 = new int(1); int* q2 = new int(2); int* q3 = new int(3); int* q4 = new int(4); cout << *d; system("pause"); return 0; }