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

admin2019-02-02  31

问题 有以下程序:
    #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/QbRp777K
0

最新回复(0)