12.若定义:int a,*p=&a; 则a与下列表达式 B 等价.请问ACD哪错了?A) p B) *&a C) *&p D)&*a
人气:333 ℃ 时间:2020-06-05 20:11:05
解答
1、在*p=&a中,&a表示a这个变量的存放地址,然后把这个地址放到p这个变量中,所以p是一个指针变量(用*p表示),所以,打印出来的p仅仅是存放a的一个地址,而不是a变量本身.所以,A)是错误的.
2、*&a先是指向a的地址,再用指针指向这个地址,当然还是变量a本身.其实,任何变量的“*&(变量名)”都是指的这个变量本身,如:*&a就是a,*&p也与p完全等价,即:*&a==a,*&p==p是恒成立的.这也就说明了B)是正确的,C)是错误的.
3、&*a这样的写法根本不知所以然,没有任何意义.所以D)也是错误的.
推荐
- 有变量定义 int i,j; 与表达式 i==0 && j==0 等价的表达式是:(A) i
- 定义int a[ ]={1,2,3,4,5,6},*p=a;表达式(*++p)++的值是________.
- 若有定义:int i,j,*pi=&i; 则与i==j等价的比较表达式是____________
- 若有定义:int a=5,*p = &a;有错误的表达式是(B) A.*&a B.&*a C.&*p D.*&p 为什么选b
- 设有如下定义:int a=1,b=2,c=3,d=4,m=2,n=3;则执行表达式:(m=a>b)&&(n=c>d)后,n的值为( ).
- boy变复数为什么不把y变为ies?
- 《彩色的非洲》中“非洲真是一个色彩斑斓的世界呀”表现了作者怎样的思想感情?
- 中国古代皇权与相权的关系变化及其原因
猜你喜欢