首页 > 试题广场 > 设有语句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;因为题目中是一个三行五列的二维数组,对于指针来说,他是可以指向一个地址的,但是指针也有行指针和列指针之分,所以,对于BC两个而言并没有规定他的列数,是的指向的到最后都会是不明确的,D则是强制转换,这样转换不合理
发表于 2019-08-23 20:43:42 回复(0)
A,左边是一个指针,指向的内容是一个存放int的数组,值是数组的地址 ,b是数组的首地址,并且数组存放的值是int ,所以A是对的
B,  左边是一个数组,存放的是指向int型的指针,而b是指向数组的指针,不符合
C,  容量超了,而且右边每个值是指向数组的指针,和左边不匹配
D,感觉是不能这么强转吧
编辑于 2019-08-23 16:19:58 回复(0)