有以下程序: #include 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

admin2018-01-14  14

问题 有以下程序:
   #include
   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[0],p相当于a即a[9],输出第一个结果为11、第二个结果为20。取地址运算符&和取值运算符*互为逆运算,所以*(&a))的值仍为a即a[9],输出第三个结果为20,答案选A。
转载请注明原文地址:https://kaotiyun.com/show/WHxp777K
0

最新回复(0)