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

admin2019-06-12  27

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

最新回复(0)