关于指针变量赋值问题

例:inta;int*pa=&a,*pb;pb=pa;问:这时的指针变量pa的值还是a的地址吗?例:inta=7,b;b=a;问:a还有值吗?有的话,还是7吗?... 例:int a; int *pa=&a,*pb;pb=pa;问:这时的指针变量pa的值还是a的地址吗?
例:int a=7,b;b=a;问:a还有值吗?有的话,还是7吗?
展开
 我来答
arbies
2014-06-18 · TA获得超过442个赞
知道小有建树答主
回答量:398
采纳率:0%
帮助的人:549万
展开全部
虽然B是正确答案,但是对CD的理解不对。
A,*p是对地址为p的内存赋值,因为p还未赋值,这种行为是危险的
B,数组的首址可理解为一个常量指针(即指向的地址不能改变的针),虽然指针不能被修改,但是其指向的地址的内容是可以改的。
C。a是常量,其地址不能被修改
D。错误在于对引用a的初始化,应该使用相同类型(int &a = b)

其实指针完整可以理解为一个整数(对常见的就是一个32位无符号整数),不过它的值有明确意义(代表一个内存空间),所以它的值不能是任意的(受可访问地址范围限制),从这个角度很容易理解为什么指针相加是无意义的(会超出访问范围),而相差是有意义(两个指针之间间隔了多少内存空间,不过要注意大地址减小地址才是有意义的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CodeBlove
2014-06-17 · TA获得超过3363个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:239万
展开全部
其实你问的是一个问题,关于左值和右值的。

在赋值号左边的变量称为左值变量,赋值号右边的变量称为右值变量。
左值变量取其地址,右值变量取其值(内容)。

你可以将变量看做对象,任何变量包含2个属性,一个是地址,一个是数值。地址对应一块内存空间,其中存放数值(内容)。

因此,C++执行赋值语句时,先取左值(左边变量的地址),再取右值(右边变量的数值),然后执行赋值操作,即将取出的右值存入左值。

取值操作不会影响原值。所以答案1是a的地址,答案2还是7.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laolaibibulai
2014-06-17 · TA获得超过358个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:228万
展开全部
还是a的地址

a有值,是7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式