已有定义“int a[4][4]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};”,若需要引用值为15的数组元素,则下列选项中错误的是() 。
A. *(a+3)+2
B. *(*(a+3)+2)
C. *(a[3]+2)
D. a[3][2]
查看答案
已有定义“int a[3][3]={5,4,3,2,1},*p1=a[0],(*p2)[3]=a;”,下面选项中不能输出1的语句是()。
A. printf("%d", a[1][1]);
B. printf("%d", p2[0][1]);
C. printf("%d", p1[4]);
D. printf("%d", p2[1][1]);
若有定义“int a[3][4]={0}, *p1=a[1], (*p2)[4]=a;”,下面表达式中与“a[1][1]=1;”不等价的是( )。
A. *(p1+1)=1;
B. p1[1][1]=1;
C. *(*(p2+1)+1)=1;
D. p2[1][1]=1;
下面的叙述中正确的是________。
A. 将指向函数的指针作为函数的参数,不符合结构化程序设计的原则
B. 数组名实际上是数组的首地址,所以数组名相当于一个指针变量
C. 若定义了数组a[2][3],则a+1和*(a+1)完全等价
D. 某函数的形参为一个数组,则调用此函数时,对应的实参只能是数组名
若有如下声明和语句:int a[3][3], *p[3], k;for(k=0; k<3;k++) p[k]=&a[k][0];则表达式*(*(p+1)+2)所引用的是()。
A. a[2][0]
B. &a[2][0]
C. a[1][2]
D. &a[1][2]