单选题 有以下程序: #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[i])); } 程序运行后的输出结果是( )。
【正确答案】 A
【答案解析】解析: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,答案选A。