下面哪一个表达式不能访问二维数组b的第i行第j列元素?
A、b[i][j]
B、*(b[i]+j)
C、*(*b+i)+j
D、(*(b+i))[j]
*的使用方法:二维数组a[i][j]的数组名a前加上*,使行地址转换为列地址;
例:
a+i为第i行行地址,则*(a+i)为第i行第0列的列地址;
*(a+i)+j为第i行第j列的列地址;
* (*(a+i)+j)中的第一个*是指向运算符,指向第i行第j列所在单元,等价于a[i][j];
A选项: b[i][j]:通过下标的方式,所以A正确。
B选项: *(b[i]+j) :b[i]相当于二维数组的i行,加上j,就相当于i行j列,然后取地址。所以B正确。
C选项: *(*b+i)+j:数组名b相当于指针,*b+i 为 b[0][i],取地址加j相当于b[j][i]。所以C错误。
D选项: (*(b+i))[j]:b+i为第i行地址,在使用*表示第i行首元素内容合并[j]下标,即b[i][j],所以D正确。