首页 > 试题广场 >

以下对函数的调用语句中,正确的是()

[单选题]
设函数fun和实参数组的说明形式为:
void fun(char ch,float x[]);
float a[10];
以下对函数的调用语句中,正确的是()
  • fun("abc", a[]);
  • t=fun('D', A);
  • fun('65', 2.8);
  • fun(32, a);
推荐
选D。考察的是对函数的调用,涉及到调用时的实参函数定义时的形参匹配问题。
根据题目:函数定义fun第一个参数为char类型,第二个为float数组类型。
  • 选项A:“abc”属于字符串,与定义函数参数不匹配,所以A错误
  • 选项B:fun函数为void没有返回值,所以无法赋值给t;所以B错误。
  • 选项C:第二个参数2.8属于double类型,float类型后面需加上f,即2.8f。因此和定义函数参数类型不匹配,所以C错误。
编辑于 2019-07-11 18:24:19 回复(4)
函数调用要求参数类型匹配。
fun形参要求int 和 数组类型,形参float x[]实际上就是float *
char型字符也属于整型,
数组名实际上是数组首元素的地址。
发表于 2022-01-26 18:19:02 回复(0)
只有fun(32,a)可以运行
编辑于 2020-04-12 22:34:48 回复(0)
    楼上的有点误人子弟啊,前三个选项我想应该都没什么问题,关键就是第四个选项里的a[10],这个是一个float型变量(虽然会有数组越界的问题),调用函数fun的时候也是对不上形参的。我查了一下相关题目,这个fun函数的定义应该是
void fun(char ch, float x);
    这样的话答案才是D。综上所述,题目不严谨。
    以上是我以c++的角度作出的评论,如有不对请大牛指正。
编辑于 2019-07-10 17:45:58 回复(3)
麻烦各位牛子们有大佬回答正确了请踢我一脚
发表于 2021-11-21 12:53:09 回复(0)
D中的32是字符?a又为何是浮点数?在线求大佬解惑
编辑于 2023-01-12 19:31:47 回复(1)
屏蔽
发表于 2021-01-16 10:17:30 回复(0)
所以2.8为什么是错误的,不理解float a = 2.8类似这样子定义有错?
发表于 2021-03-04 10:53:49 回复(2)
我的理解是普通函数可以进行隐式类型转换,那个32可以看作是ascii码转化为对应的字符
编辑于 2024-03-29 17:00:56 回复(0)
float x[] 表示传入任意大小的float数组都可以
发表于 2023-07-29 23:20:53 回复(0)
牛客的题从来不让我失望。。。。。
这题没有答案
发表于 2019-07-10 19:46:49 回复(0)