49. int a[4][5],(*p)[5]; p=a; 下列对数组a 数组元素正确的引用形式是( )?

49. int a[4][5],(*p)[5];
p=a;
下列对数组a 数组元素正确的引用形式是( )
A. p+1 B. *(p+3) C. p[0][2] D. *(p+1)+3

该题选C。(a怎么用,p就怎么用,用法相同)
对于选项A,首先p是数组指针,其类型为int (*)[5],p=a使得p(即p+0)成为指向二维数组a第0行首地址的指针,那么p+1表示的是指向二维数组a第1行首地址的指针。
对于选项B,首先p+3表示指向"二维数组a第3行首地址"的指针,那么*(p+3)也就是得到指针所指之处的值 即"二维数组a第3行首地址"。【注意,**(p+3)即*(*(p+3)+0)才表示获得第3行第0列的元素值】
对于选项D,首先*(p+1)是获得二维数组a第1行首地址,再加3表示向后偏移三个元素,即*(p+1)+3表示指向二维数组a第1行第3个元素的指针。也就是说*(*(p+1)+3)才表示获得p[1][3]元素的值。
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-09-04
C. p[0][2]追问

为啥?能帮忙解释下吗

追答

p = a;
把 a[4] [5];的行地址赋值给指针数组的行,此时 *p = a[0];
不知道这样说你是否能明白

追问

这句话明白,为啥ABD不对啊?

追答

A,B,D 都是在行地址上相加,没有列的地址,此时引用它们输出的都是地址

追问

谢谢

本回答被提问者采纳

...int a[4][5], (*p)[5]; p = a; 则对a数组元素
A p+1 .因为p是一维数组指针,所以p每+1就是+1行。错误。B (p+3)是指第4行的首地址,访问不到元素。需要再 C (p+1)+ 3 对地址+3 没啦意义 D (*p+2)p是第0行首地址 +2 呢就是第二个元素的地址,*取数据咯。

...int a[4][5], (*p)[5]; p = a; 则对a数组元素
如果定义int (*p)[n];p1=a;p1++后,p指向a[1][0];则p+j将指向a[0]数组中的元素a[0][j]。由于a[0]、a[1]┅a[M-1]等各个行数组依次连续存储,则对于a数组中的任一元素a[i][j],指针的一般形式如下:p+i*N+j,相应的如果用p来表示,则为*(p+i)+j;元素a[i][j]相应的...

...int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是D.*(p[0]+2...
【答案】:B 解析:本题中c是一个二维数组,p是一个含有5个元素的数组名和首地址,通过p可以检索数组的值。

...int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是
(p[0]+2)代表c[0][2]这个元素。p是行指针,用于指向二维数组的一行。p=c,故p+1是第1行的指针,指针指向行 (p+3)等价于c[3],表示c[3][0],指针指向列。(p+1)+3 等价于c[1]+3,即c[1][3],指针指向列。(*(p+0)+2),等价于c[0][2],代表c数组的一个元素 ...

...*p)[4];p=a;下列选项对数组a元素引用正确的是?
选择B A选项等效于p[4][0],即a[4][0],显然是越界了 C选项等效于p[0][0][2],显然不对 D选项等效于p[4][0],同A理

...对a数组元素的正确引用为( )。 int a[2][3],(*p)[3];p=a;_百度知...
选 C。p 的类型是int (*)[3],是指针的指针。C选项相当于 p[1][1]。B选项错,它相当于 p[2][1],数组的第一个坐标越界了。

...12},(*p)[4];p=a; ,( )对数组a元素的引用是正确的。
int (*p)[4];表明p是行指针,即p指向二维数组中的一行。p=a;这一句表示p指向a[0],也就是指向a数组第0行的第0个元素(a[0][0])的地址。p[2]表示p指向a数组的第二行,即指向a[2]行,也就指向a[2][0]的地址。p[2]+3表示行指针指向a数组的第二行(从第0行开始),(从0开始)第...

...语句int a[5], *p=a;,则对a数组元素的正确引用是什么 A *&a[5...
正确答案是:D &a[5]就是a[5],下标越界了 a就是a[0],a[0]+2不是对数组元素的正确引用 同理,*(p+5)就是a[5],下标越界了 而* (a+2)就是a[2]

8、在定义 int a[5][4];对数组元素的正确引用是( ) A a[0][0] B a...
8、正确答案A;数组最大元素是a[4][3]所以BC错,D格式不对 9、看不到 10、看不到 11、看不到 12、看不到 13、看不到 14、正确答案:C,不解释,这是个三目运算符,你慢慢就会懂的 15、正确答案:C 16、正确答案:A 17、A 18、B 19、B 20、C 21、C 22、D 23、A 24、D 25、...

int a[5] int (*p)[5]; 下面语法正确的选项是() A p=a B p=&a C p...
B p定义为一个指针,这个指针指向一个数组,这个数组有5个int类型的元素 a定义为一个有5个int类型元素的数组,取a的地址赋值给P是合理的

相似回答