
++
1 2 3 4 5 6 7 8 9 10
|
char *() { char str[]="hello world"; return str; } char *() { char *str="hello world"; return str; }
|
首先,指针只有四个字节,无法保持数据,所以定义后会在常量区开辟空间赋值。
所以return str返回的是常量区空间(在程序结束后才会被释放)
这也解释了第一个为什么返回乱码了。
然后继续再来看这一句:++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
int* 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; }
|
近期评论