设有定义int a=3,b,*p=&a;执行p=a后b里的值为3,为什么?p不是指针变量吗执行p=a后装的不是a里的值吗?

指针变量不是只能装地址的吗?

你给的题目是错的。且 p = a 是错误的用法。
如果原题改成:设有定义int a=3,b,*p=&b;执行 *p=a后b里的值为3,就对了。追问

原题目是设有定义“int a=3,b,*p=&a;",则下列语句中使b部位3的语句是1.b=*&a
2.p=a,
3.b=*p,
4.b=*a
答案是1.2.3

追答

1、*&a等价于 a,所以1等价于 b = a;因此成立;
2、错误;
3、*p等价于a,所以成立;
4、因为a是int型变量,不是指针变量,所以*a运算错误。
因此能使b为3的语句是1和3.
但是你的各个语句里面都没有分号,所以都是表达式而不是语句,因此严格的说的话你的选项都不对。

追问

p=a这不是直接引用吗?

追答

不是,p是指针变量,而a不是,所以赋值会被编译器警告的。也就是说是不合法的。

追问

那我想通过直接引用法该怎么实现b中的值为3呢?

追答

b = 3;

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答