关于指针变量赋值问题
例: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吗? 展开
例:int a=7,b;b=a;问:a还有值吗?有的话,还是7吗? 展开
展开全部
虽然B是正确答案,但是对CD的理解不对。
A,*p是对地址为p的内存赋值,因为p还未赋值,这种行为是危险的
B,数组的首址可理解为一个常量指针(即指向的地址不能改变的针),虽然指针不能被修改,但是其指向的地址的内容是可以改的。
C。a是常量,其地址不能被修改
D。错误在于对引用a的初始化,应该使用相同类型(int &a = b)
其实指针完整可以理解为一个整数(对常见的就是一个32位无符号整数),不过它的值有明确意义(代表一个内存空间),所以它的值不能是任意的(受可访问地址范围限制),从这个角度很容易理解为什么指针相加是无意义的(会超出访问范围),而相差是有意义(两个指针之间间隔了多少内存空间,不过要注意大地址减小地址才是有意义的)
A,*p是对地址为p的内存赋值,因为p还未赋值,这种行为是危险的
B,数组的首址可理解为一个常量指针(即指向的地址不能改变的针),虽然指针不能被修改,但是其指向的地址的内容是可以改的。
C。a是常量,其地址不能被修改
D。错误在于对引用a的初始化,应该使用相同类型(int &a = b)
其实指针完整可以理解为一个整数(对常见的就是一个32位无符号整数),不过它的值有明确意义(代表一个内存空间),所以它的值不能是任意的(受可访问地址范围限制),从这个角度很容易理解为什么指针相加是无意义的(会超出访问范围),而相差是有意义(两个指针之间间隔了多少内存空间,不过要注意大地址减小地址才是有意义的)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实你问的是一个问题,关于左值和右值的。
在赋值号左边的变量称为左值变量,赋值号右边的变量称为右值变量。
左值变量取其地址,右值变量取其值(内容)。
你可以将变量看做对象,任何变量包含2个属性,一个是地址,一个是数值。地址对应一块内存空间,其中存放数值(内容)。
因此,C++执行赋值语句时,先取左值(左边变量的地址),再取右值(右边变量的数值),然后执行赋值操作,即将取出的右值存入左值。
取值操作不会影响原值。所以答案1是a的地址,答案2还是7.
在赋值号左边的变量称为左值变量,赋值号右边的变量称为右值变量。
左值变量取其地址,右值变量取其值(内容)。
你可以将变量看做对象,任何变量包含2个属性,一个是地址,一个是数值。地址对应一块内存空间,其中存放数值(内容)。
因此,C++执行赋值语句时,先取左值(左边变量的地址),再取右值(右边变量的数值),然后执行赋值操作,即将取出的右值存入左值。
取值操作不会影响原值。所以答案1是a的地址,答案2还是7.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还是a的地址
a有值,是7
a有值,是7
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询