首页 > 试题广场 >

已知函数的原型是:int fun(char b[10], i

[单选题]
已知函数的原型是:int fun(char b[10], int a);变量c,d的定义是:char c[10];int d;,正确的调用语句是()
  • fun(c,d);
  • fun(c,&d);
  • fun(&c,d);
  • fun(&c,&d);
推荐
A
函数的原型是:int fun(char b[10], int &a);
变量c,d的定义是:char c[10];int d;
①函数第一个形参 char b[10] ,需要传入的是数组的首地址。数组char c[10] 的数组名 c 是数组的首元素地址,可以传入 c。
函数第二个形参int &a为引用类型作为形参,d 是 整型变量,可以直接传入,因此传给 fun 函数的实参是 d。最终,fun 函数调用的形式是 f(c,d)。因此选A。

补充:
如果函数原型为int fun(char b[10], int *a);
即此时第二个形参为指针类型,需传入变量d的地址,此处就应该选B。
编辑于 2020-01-06 14:43:40 回复(1)
B
该题考察的是实参和形参的理解。

根据题目:

  • char c[10];int d  为实参在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。
  • 函数原型int fun(char b[10], int &a);中的定义函数名和函数体的时候使用的参数为形参,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。
因而,必须注意实参的个数,类型应与形参一一对应
根据形参第一个参数为数组(即可以用数组名来表示数组元素的首地址),第二个参数为变量地址,所以选B。

发表于 2020-01-04 07:49:55 回复(2)
选A。
注意函数原型是int fun(char b[10], int a),有两个参数,
第一个参数是一维数组,而char c[10]传参时只需要传数组名c就可以;
第二个参数是一个整型变量,而不是指针变量,所以传参时传的是形参,不需要取地址传实参
发表于 2022-03-22 20:08:22 回复(0)
这么简单你们说选b?第二个参参数不是引用吗。选a
发表于 2020-01-04 14:36:15 回复(0)
fun 的原型是 fun(char b[10], int &a);其实 char b[10] 的关键在于传入的是数组的首地址,10并不起作用,也就是说,fun函数要传入两个地址类型的参数。其中 char c[10] ,c 是个数组,数组名 c 就是个地址,因此直接传入 c。而 d 是 整型,要使用取址符 & 得到 d 的地址后再传入,因此传给 fun 函数的实参是 &d。最终,fun 函数调用的形式是 f(c,&d),所以选b
发表于 2020-01-03 16:53:30 回复(0)
答案:B
解析:fun 的原型是 fun(char b[10], int &a);其实 char b[10] 的关键在于传入的是数组的首地址,10并不起作用,也就是说,fun函数要传入两个地址类型的参数。其中 char c[10] ,c 是个数组,数组名 c 就是个地址,因此直接传入 c。而 d 是 整型,要使用取址符 & 得到 d 的地址后再传入,因此传给 fun 函数的实参是 &d。最终,fun 函数调用的形式是 f(c,&d)
发表于 2020-01-03 15:07:20 回复(1)
没有定义指针接受所以不能进行地址传递(个人想法)

发表于 2022-08-08 17:04:11 回复(0)
选A啊:
int fun(char b[10], int &a);
1.函数的第一个形参不必多说,只要传入数组首地址即可
2.函数的第二个形参为引用类型,直接传变量即可,且在函数背部改变形参的值,传入的变量值也跟着改变
发表于 2020-01-06 11:07:30 回复(0)
明显选A呀,c++的引用传递。第二个&a改成*a,才是选B的
发表于 2020-01-05 09:28:47 回复(0)