内存地址问题
来源:2-5 指针变量符号
broodopq
2018-08-30 16:18:11
#include <iostream>
using namespace std;
int main()
{
int a=11,b=22;
int *p1,*p2,*q;
p1=&a;
p2=&b;
cout<<p1<<","<<p2<<endl;
if(a<b)
{
q=p1;
p1=p2;
p2=q;
}
cout<<p1<<","<<p2<<endl;
cout<<&p1<<","<<&p2<<endl;
cout<<*p1<<","<<*p2<<endl;
cout<<a<<","<<b<<endl;
}
0018FF3C,0018FF38
0018FF38,0018FF3C
0018FF34,0018FF30
22,11
11,22
为什么出现了4个不同的内存地址?
还有就是 &p1 和 p1 应该都是p指针的内存地址吧?值应该一样才对吧
1回答
guly
2018-08-30
你好, p1存放的是a的地址,p2存放的是b的地址,交换以后p1存放b的地址,p2存放a的地址,所以第一行打印的和第二行打印的交换了,&p1取的是p1的地址,&p2取的是p2的地址, p1本身自己在内存中也是占有内存空间的,&p1取的是p1的地址,&p1和&p2地址是随机分配的,系统不一样显示的地址也是不一样的,如果解决您的问题请采纳,祝学习愉快!