A:是正确的,比如a[0][0]B:是正确的,a[i]+j是a[i][j]的地址,在用*指向也是引用了这个地址C:是正确的,*(a+i)表示a[i][0]的地址*(a+i)+j是a[i][j]的地址*(*(a+i)+j)也是使用了他D:是错误的,因为他只指向了一次,就是a[i*4+j]的地址。
做此题必须对一维数组比较了解答案D,二维数组其实是一个一维数组,并且每行也能看成一个一维数组,所以,二维数组也可以看出是多个一维数组组成,并有以下对应关系第0行首地址,a[0] = &a[0][0]以此类推,第i行的首地址 a[i] = &a[i][0];另外规定 *(a+i) = a[i];故可以看成 a 是a[0],a[1],...a[i ]..,各行首地址的所组成的一维数组的首地址A正确,就是取a[i][j]元素 B正确,*(a[i]+j) 第i行首地址偏移j,取得是a[i][j]C正确,由于*(a+i) = a[i]=》*(*(a+i)+j) = *(a[i]+ j) = a[i][j] D,*(a+i*4+j) = *(a[i*4+j]) = a[i*4+j][0],当(i*4+j) > 3时,就会越界,故引用错误 追问 答案是D额= =