有以下程序: #include<stdio.h> main( ) { int a[10]={11,12,13,14,15,16·17,18,19,20},*p=a,i=9; printf("%d%d%d\n",a[p-a],p[i],*(&a[i]));

admin2022-06-24  21

问题 有以下程序:
#include<stdio.h>
main( )
{
int a[10]={11,12,13,14,15,16·17,18,19,20},*p=a,i=9;
printf("%d%d%d\n",a[p-a],p,*(&a));
}
}
程序运行后的输出结果是(          )。

选项 A、11 20 20
B、12 20 20
C、11 19 19
D、12 19 20

答案A

解析 a表示数组a的第一个元素的地址,*p=a则将p指向了数组a的第一个元素的地址,p-a=0,所以a[p-a]即为a[O],p相当于a即a[9],输出第一个结果为11、第二个结果为20。取地址运算符&和取值运算符*互为逆运算,所以*(&a))的值仍为a即a[9],输出第三个结果为20,故答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/0Gkp777K
0

最新回复(0)