C语言的一道选择题。

若主函数中有定义句:inta[10],b[10],c;在主函数前定义的fun函数首部为:voidfun(intx[]),则以下选项中错误的调用语句是?Afun(b);Bf... 若主函数中有定义句:int a[10] ,b[10] , c;在主函数前定义的fun函数首部为:void fun (int x[ ]),
则以下选项中错误的调用语句是?
A fun(b) ; B fun(&c) ; C fun(&a[3]); D fun(b[1]);
我知道答案是D但是为什么是D?求高人给解答一下。
展开
 我来答
百度网友5e36164
2013-09-20 · TA获得超过606个赞
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:173万
展开全部
首先在fun函数中参数:int x[ ](表示一个数组,由x指向一个地址空间,里边存放int类型的数据)。故调用fun函数是变量也应该是数组的引用变量,或者是指向一个地址的变量。
D :fun(b[1])。b[1]表示的是数值b中第一个元素的值(是一个int的数值),不是一个地址;
A fun(b)。b表示int类型数组b的地址;
B fun(&c)。&符号就是表示是地址;
C fun(&a[3])。同C选项,&a[3]就是指向数组a第三个元素的地址;
综上所述,选D。
ddfdt
2013-09-20 · TA获得超过326个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:84.8万
展开全部
这里其实是函数对数组的调用,之所以fun( int x[]);中的[]没有数字,是为了不限制可调用的函数,如果[]里面是10,则只可以调a[10],b[10]等只含有10个元素的数组,如果[]里面是空的,你可以调用任意元素的数组,答案是A。 因为调用的是数组,所以B错,C不是数组,是数组中的一个元素,错误理由和B的理由相同,如果fun函数是: fun(int *p) 则BC都是对的, D的错误是在于b[1]是数组中的一个元素, 数组的首地址代表了这个数组,想输入或者输出或者调用一个数组,只需要他的首地址即可,题中的2个数组a b,的首地址是&a[0], &b[0],C语言的设计为了方便,则规定简写为a,b, 所以答案A是对的,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
二弼萌8
2013-09-20 · TA获得超过666个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:328万
展开全部
b[1]是数组的一个元素。而函数需要的参数是一个地址。
直接用应该不行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lihengma
2013-09-20
知道答主
回答量:5
采纳率:0%
帮助的人:5.1万
展开全部
int X[],表示的数组X的首地址。因为A,B,C相当于调用的地址,而D是调用的一个int整形数据,所以选D,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yht_520
2013-09-20
知道答主
回答量:24
采纳率:0%
帮助的人:10.5万
展开全部
答案是A,因为b是数组,它却当成变量了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式