若有以下定义和语句,则对a数组元素非法引用的是:int a[2][3],(*pt)[3];pt=a;A.pt[0][0] B.*(pt+1)[2] C.*(pt[1]+2) D.*(a[0]+2)
问题描述:
若有以下定义和语句,则对a数组元素非法引用的是:
int a[2][3],(*pt)[3];
pt=a;
A.pt[0][0] B.*(pt+1)[2] C.*(pt[1]+2) D.*(a[0]+2)
答
指针变量 pt 指向 a 数组!
*pt 相当于 a [0];
*(pt + 1) 相当于 a[ 1];
*(pt + 1)[2] 相当于 *(pt + 3);
* (pt + 3) 等价于 a[3];
显然 a[3] 不存在!所以 选项 B 非法!