首页 > 试题广场 >

设有语句int b[3][5];下面哪一条语句是正确的?

[单选题]
设有语句int b[3][5];,下面语句正确的是()

  • int (*p)[5]=b;
  • int *p[]=b;
  • int *p[2]={b[0],b[1],b[2]};
  • int *p[]=(int *[])b;
推荐
A
题干语句int b[3][5];声明一个名为b的二维数组。
  • A表示数组指针,一个指向5个元素的指针。将二维数组的首地址赋值给指针p
  • B表示指针数组,一个存放int类型指针的数组。将二维数组的首地址赋值给指针数组。类型不匹配。
  • C表示指针数组,一个存放两个int类型指针的数组。结果将三个元素赋值给数组,所以溢出。
  • D将数组首地址强制转换成指针数组,不合法。
编辑于 2019-08-26 14:10:58 回复(0)
A,左边是一个指针,指向的内容是一个存放int的数组,值是数组的地址 ,b是数组的首地址,并且数组存放的值是int ,所以A是对的
B,  左边是一个数组,存放的是指向int型的指针,而b是指向数组的指针,不符合
C,  容量超了,而且右边每个值是指向数组的指针,和左边不匹配
D,感觉是不能这么强转吧
编辑于 2019-08-23 16:19:58 回复(0)

A表示数组指针,一个指向5个元素的指针。将二维数组的首地址赋值给指针p
B表示指针数组,一个存放int类型指针的数组。将二维数组的首地址赋值给指针数组。类型不匹配。
C表示指针数组,一个存放两个int类型指针的数组。结果将三个元素赋值给数组,所以溢出。
D将数组首地址强制转换成指针数组,不合法。

发表于 2021-06-08 16:38:41 回复(2)
答案是A;因为题目中是一个三行五列的二维数组,对于指针来说,他是可以指向一个地址的,但是指针也有行指针和列指针之分,所以,对于BC两个而言并没有规定他的列数,是的指向的到最后都会是不明确的,D则是强制转换,这样转换不合理
发表于 2019-08-23 20:43:42 回复(0)
指向二维数组的,那就选一个数组指针,也就是数组的指针,定语是指针,那就是*要高于[],因为默认[]高于*,所以需要加括号。所以选A。
编辑于 2020-12-30 19:03:45 回复(0)
指针数组:即为存放指针的数组。一个数组里的元素是指针,每个元素指向不同的地址。
数组指针:即为存放数组的指针。如int( * p)[n],这个指针里存放了步长为n的一维数组的首地址。当它通过+1等方式进行运算时,将指向+n个数据长度的地址,而不是指向下一个元素的地址。
发表于 2023-04-24 19:52:29 回复(0)
<p>考察数组指针和指针数组的概念</p><p><br></p>
发表于 2020-08-03 13:24:41 回复(0)