单选题有以下程序#include main(){ int a[10]={11,12,13,14,15,16,17,18,19,20},*p=a,i=9; printf("%d,%d,%d",a[p-a],p[i],*(&a[i]));}程序运行后的输出结果是(  )。A 11,19,19B 12,20,20C 11,20,20D 12,19,20

题目
单选题
有以下程序#include main(){ int a[10]={11,12,13,14,15,16,17,18,19,20},*p=a,i=9; printf("%d,%d,%d",a[p-a],p[i],*(&a[i]));}程序运行后的输出结果是(  )。
A

11,19,19

B

12,20,20

C

11,20,20

D

12,19,20


相似考题
参考答案和解析
正确答案: D
解析:
a表示数组a的第一个元素的地址,*p=a则将p指向了数组a的第一个元素的地址,p-a=0,所以a[p-a]即为a[0],p[i]相当于a[i]即a[9],输出第一个结果为11、第二个结果为20。取地址运算符&和取值运算符*互为逆运算,所以*(&a[i]))的值仍为a[i]即a[9],输出第三个结果为20,答案选择C选项。