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?求高人给解答一下。 展开
则以下选项中错误的调用语句是?
A fun(b) ; B fun(&c) ; C fun(&a[3]); D fun(b[1]);
我知道答案是D但是为什么是D?求高人给解答一下。 展开
6个回答
展开全部
首先在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。
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。
展开全部
这里其实是函数对数组的调用,之所以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是对的,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
b[1]是数组的一个元素。而函数需要的参数是一个地址。
直接用应该不行。
直接用应该不行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int X[],表示的数组X的首地址。因为A,B,C相当于调用的地址,而D是调用的一个int整形数据,所以选D,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是A,因为b是数组,它却当成变量了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询