C语言的一道选择题。

若主函数中有定义句: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?求高人给解答一下。

首先在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。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-20
这里其实是函数对数组的调用,之所以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是对的,
第2个回答  2013-09-20
b[1]是数组的一个元素。而函数需要的参数是一个地址。
直接用应该不行。
第3个回答  2013-09-20
int X[],表示的数组X的首地址。因为A,B,C相当于调用的地址,而D是调用的一个int整形数据,所以选D,
第4个回答  2013-09-20
答案是A,因为b是数组,它却当成变量了

一道C语言选择题,求答案及解析,好评
答案为:C 分析:1、switch(表达式)中的表达式不能为实型,所以A错误。同时B的用法错误,如果B改为 switch((int)x)那么B也是正确的;2、case 常量表达式: 中的 常量表达式不能是实型,所以A中的1.0和2.0都是错误的,同时该表达式也不能是变量或含有变量的表达式,所以D错误,因为D中有 case...

c语言 一道简单的选择题
按%d%d%d格式输入时,要求用空白(空格、换行等)作为分隔符。当输入3 4,5时,因为3 4符合输入格式的要求,所以会将3赋值给a,4赋值给b。但接下来遇到了逗号,不符合输入格式的要求,scanf函数会提前退出,并返回2(表示成功赋值了2个值),而c不会被赋值(保持它原来的值2),所以答案是D。

帮忙解答一道C语言选择题
};第一部分将结构体struct student定义为类型STU,所以可以用STU s;来声明一个结构体,所以D是对的 第二部分定义一个机构体struct student,所以可以用struct student s;来声明一个结构体,所以B是对的 选项C:typedef struct student s;是将struct student定义为类型s,和第一部分的功能是类似的,只是类型...

C语言,题目中的选择题,求详细解析
正确答案应该是B.15。这里考察的重点是符号常量的使用。主函数中出现符号常量FUN(x,y) 则直接用 (x)<(y)?(x):(y)替代即可。本题中:k=10*FUN(i,j);可以看作:k=10*(i)<(j)<(i):(j);而i=10,j=15 所以按照运算优先级有:k=100<15?10:15;结果显然是15。故选择B。

一道C语言题选择题。如图,这个要怎么做?
答案C 计算字符串的长度 int fun(char *s){ char *t=s;\/\/指针t指向字符串s的第一个元素的地址(首地址)while(*t++);\/\/这里是将指针t移动到字符串s的 最后一个元素的后面;t--;\/\/这里指针t又向前 移动一个位置;这样刚好指向最后一个元素的地址;return (t-s);\/\/t(尾地址);s(首...

求教一个C语言选择题
答案是C A的值是30,数组里面第三个元素,但下标是2(从0开始)B的值是30,先移动括号里的指针,指针p指向第一个元素,(p+2)指向第三个元素 C是先用*运算符求指针a指向的元素值(即是10),之后再加10便是正确答案20 D的值是10,*运算符的优先级大于右++运算符 本题考察数组指针和运算...

C语言选择题一个,求详解
char str2[size+2]的意思就是char str2[12]B,char str[];里面应该要放入具体的容量,比如 char str[10];C,int num['10']是错误的,int num[10]是对的。D是错误的,C语言不允许这种写法,不允许定义的变量出现在数组里,因为变量值的改变,就会导致数组的破坏,这样会破坏程序的健壮性。

一道C语言程序设计选择题
首先这是一个问号的嵌套,可以看成k<a?(k):(c<b?c:a)c<b是成立的那么c<b?c:a的返回值是c,k<a是不成立的那么k<a?(k):(c<b?c:a)的返回值是(c

一道C语言选择题,求答案。
答案应该是选C 因为C语言规则规定:标准库函数不允许用户进行重新定义,只能进行引用,调用前需使用预编译命令进行预编译;

c语言一道选择题不懂
答案是D,fabs()是计算浮点数绝对值的,x的3次方用pow()适合。望采纳

相似回答