![]() |
#2
TonyDeng2015-11-30 18:59
|

#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;
}
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编辑过]