请教C语言题目

2024年11月18日 10:27
有4个网友回答
网友(1):

首先明确这几个问题。int s[4][6]:4行六列的二维数组 t[6][4]:六行四列的二维数组 (*p)[6]:指向n行六列的二维数组的指针
1、A p指向的二维数组和t的列数不符合。
C和D p是二维数组的指针,s[i]t[i]表示一行,近似一维数组

2、*p:指向int型变量指针 *q[4]指向int型变量的指针数组。
A q[i]是指针,b[i]是一个一维数组。所以可以。因为指针可以近似看做一个一维数组。
B p是指针,而b是二维数组的首地址。
C 同理A
D q[i]是指针,&b[0][0]相当于把整个的二维数组看做是一个int型变量,取地址赋值,正确。
这里要注意和B进行区分。B是指针指向二维数组的第一个元素的地址,这是不行的。这个是把整个二维数组取地址赋值。D选择如果q[i+1]就是指向整个二维数组的最后一元素的下一地址。

已经说的比较明白 了。楼主,你要好好练习指针啊。第一题,C选项p是指向二维数组的指针,而s[i]是一个数组,当然不可以赋值,就和类型不匹配一样。
第二题,B之所以错了,因为P是一个指针,就是指向一维数组的指针,如果想指向二维数组,必须定义成一个指向二维数组的指针,例如](*p)[6];

网友(2):

第一题:选B (*p)[6]说明:P是一个指向一维数组的指针变量,并且这个一维数组的每一列有6个元素,选项A每列只有4个元素,选项,C,D都是一维数组,但是每一列只有一个元素,选项C的每列是6个元素,一共4行,所以他符合

第二题:选B *q[4]的意思就是一下子定义了4个指针变量,分别为*q[0]到*q[3] ; 注意区分*q[4]和(*q)[4]的意义是不相同的,
A中q[i]就是一个指针而b是二维数组,所以b[i]就变成了指向普通变量的指针,仍然是一个指针,所以他们之间赋值是可以的; B中b是二维数组指针而p只是普通变量的指针,类型不符,不能相互赋值
C和D,都是一样的,都是普通变量指针的相互赋值关系
总结就是:指针要相互赋值,必须类型一致,指向二维数组的指针不能赋给指向普通变量的指针

网友(3):

我想想 p是指针 所以它指向的是数组首地址 所以很明显是B

网友(4):

第一题(*p)[6]意思是p指向一个一维数组,这个一维数组的元素是几个一维数组,这几个一维数组都需有6个元素