请看代码,问题也在代码中
程序代码:
#include<iostream> using namespace std; char* getStr1(); char* getStr2(); char* getStr1() { char* p1; p1="asdbsd"; return p1; } char* getStr2() { char* p2; p2="asdbsd"; return p2; } int main() { char *p1=getStr1(); char *p2=getStr2(); cout<<"p1:"<<p1<<" p2:"<<p2<<endl;//p1、p2存的是地址,所以猜想应该输出的是地址(且应该地址相同),结果输出了预设定的字符串asdbsd cout<<"*p1:"<<*p1<<" *p2:"<<*p2<<endl;//愿意是用*操作p1、p2指向的内存块,猜想应该都输出asdbsd,结果都输出了a; cout<<"&*p1:"<<&*p1<<" &*p2:"<<&*p2<<endl;//由上一行,如果*p1和*p2找到的是a,那再在前面加&取到的应该是全局区中asdbsd的地址了吧(或者说应该是a的地址),结果输出是asdbsd。 //今天学内存四区的划分和指针的东西遇到一点不懂的,就自己试了试,结果,我已经完全晕了,请知道的人帮我解释解释 return 0; }
[此贴子已经被作者于2015-11-30 17:47编辑过]