内存地址问题

来源: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地址是随机分配的,系统不一样显示的地址也是不一样的,如果解决您的问题请采纳,祝学习愉快!

0

0 学习 · 593 问题

查看课程

相似问题

回答 1

回答 1

回答 2