求详细解答答案为什么是A?

若有下列定义和语句,则对a数组元素的非法引用是(). int a[2][3],(*pt)[3];pt=a;

A.(pt+1)[2]
B.pt[0][0]
C.
(pt[1]+2)
D.*(a[0]+2)

先举个栗子:
(*a+2)[0] 代表 a[0][2]
如果是 int a[4][3]
(*a+M)[N] 代表 a[(M+N)/3][(M+N)%3]

这种形式很容易出现问题


(*pt+1)[2] 想表达的是 pt[1][2],但实际上是 pt[0][3]

D,超出定义的数组大小了。