有关指针的C语言试题求解

inta[5][6],(*p1)[6],*p2[5],**p3;下面正确的是Ap1=a[0]Bp1=p2Cp3=p1Dp3=p2请详细解说,尤其是cd选项答案是D,但为什... int a[5][6],(*p1)[6],*p2[5],**p3; 下面正确的是
A p1=a[0] B p1=p2 C p3=p1 D p3=p2
请详细解说,尤其是c d选项
答案是D,但为什么呢?希望高手说清原因
展开
 我来答
sunnyapi
2011-07-06 · TA获得超过1031个赞
知道小有建树答主
回答量:376
采纳率:100%
帮助的人:364万
展开全部
您好楼主,ishead的回答是正确的,我稍微多啰嗦一下。
int a[5][6]是一个二维数组,a[0]的意思是数组的第一行元素,
比如
a[5][6]=
{
{0,1,2,3,4,5},
{0,1,2,3,4,5},
{0,1,2,3,4,5},
{0,1,2,3,4,5},
{0,1,2,3,4,5}
};
于是有
a[0]= {0,1,2,3,4,5};

(*p1)[6]
告诉我们p1是一个指针,因为其前面有一个*号
一个指针和一行整数之间无法赋值,所以A不对。A可改为:p1=&a[0]; 或p1=a;

针对B选项:
p1是指针,上面刚解释过了。但是p2是什么?假设我写一个p2[5],本身数组名p2就是一个指针,对吧?那么在前面再加一个*呢?楼主就明白啦吧!*p2[5]的p2就是指针的指针了。B不对啦吧!可以改为:p1=&p2 或者 *p1=p2

针对C选项:
p1是指针,上面刚解释过了。但是p3是什么?显然是指针的指针,前面两个*嘛!所以显然不对啦。可改为:p3=*p1 或者&p3=p1

针对D选项:
p3是指针的指针,P2也是指针的指针,上面刚解释过了。之间可以赋值。正确!

哈哈,不知道楼主明白啦没,如果没有,可以继续对我发问哦。
Smart_wolf
2011-07-06 · TA获得超过1696个赞
知道小有建树答主
回答量:1468
采纳率:50%
帮助的人:630万
展开全部
C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bud000
2011-07-06 · 超过14用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:33.4万
展开全部
A选项是正确的。二维数组a[5][6],a[0]=&(*a[0][0])表示的指向有6个元素的指针,与p1是一致。
B错误。p2实际是一个指针数组的数组名,不能赋值给p1,因为p1一个指向数组的指针。
C错误。因为p3是一个指向指针的指针,而p1一个指向数组的指针。
D错误。因为p3是一个指向指针的指针,p2是一个指针数组的数组名。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ishead
2011-07-06 · TA获得超过167个赞
知道答主
回答量:184
采纳率:0%
帮助的人:54.7万
展开全部
D

p1 = a[0]; Operation between types "int(*)[6]" and "int*" is not allowed.
p1 = p2; Operation between types "int(*)[6]" and "int**" is not allowed.
p3 = p1; Operation between types "int**" and "int(*)[6]" is not allowed.

p2 也是 int ** 类型的。 一般[]可以等同于多一个 *
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式