【sos】若有以下定义,且0<=i<4,则不正确的赋值语句是 int b[4][6],*p,*q[4];

A q[i]=b[i];
B p=b;
C p=b[i];
D q[i]=&b[0][0];

答案是b 为什么,

你好楼主!
首先,你要知道*q[4]中的q是一个数组的指针,也就是说q是指向一个数组,并且这个数组中有4个元素的。
我们看一下b[4][6],这是一个二维数组,其实我们可以把他拆分一下,也就是b是一个含有4个元素的数组,而这个数组中的4个元素都是一个数组,后面的这4个数组中都有6个元素,这样你懂的。

好,我们再把这个b[4][6]变一下,我们可以写成这个样子:(*b[4])[6],我再来对这个解释一下,b是一个指针的数组(看清楚了,当成数组),一个含有4个元素的数组;并且这个数组中的元素都是数组的指针(看清楚了,是指针,指向数组的指针),也是指向数组的,这里的数组中的元素就之是一个普通的元素了。

既然p只是一个普通的指针(它可以指向一个数组,即可当成是数组的指针),而b却是一个指针的数组(注意是指针的数组,而不是数组的指针,故是一个数组),所以它肯定会出错了。

好了,做这些解释,认真看看,对你学习指针会有帮助。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-24
*q[4]是int *型指针数组;b是以一维数组为元素的一维数组,b[i]是(第(i+1)行)就是个一维数组,数组名,就是个地址;
b是int **(指向指针的指针);p是int *型指针,两个根本不匹配;
第2个回答  2011-04-25
集合p:满足m^2-4〉0和x1+x2=-m〈0,解得m〉2 集合q:满足[4(m-2)]^2-16〈0得1〈m〈3 p,q不能同时为真,当p真时,得m〉=3 当q真时,得1〈m〈=2 综上:1〈m〈=2或m〉=3
相似回答