在 C 语言中,若有以下定义和赋值语句int b[2][3]={0} (*p)[3]; p=b; 则对 b 数组的第 i 行第 j 列(假如 i,j 已正确说明并赋值)元素的非法引用为___________A、*( *(p+i)+j) B、*(p[i]+j) C、*(p+i)+j D、(*(p+i))[j]

问题描述:

在 C 语言中,若有以下定义和赋值语句
int b[2][3]={0} (*p)[3];
p=b;
则对 b 数组的第 i 行第 j 列(假如 i,j 已正确说明并赋值)元素的非法引用为___________
A、*( *(p+i)+j) B、*(p[i]+j) C、*(p+i)+j D、(*(p+i))[j]

C选项是错的A选项*(p+i)为p[i][0]的地址,*(p+i)+j为p[i][j]的地址,*( *(p+i)+j) 也就是p[i][j]的值B选项中p[i]相当于*(p+i),其他跟A一样了C选项,如上面所说,*(p+i)+j为p[i][j]的地址,不能赋值D选项,(*(p+i))为p[i][0...