假设给出如下的函数声明: void func(int a,int b=2,int c=3);,则下列函数调用正确的是(    )

假设给出如下的函数声明: void func(int a,int b=2,int c=3);,则下列函数调用正确的是(    )


A、

func(1,22,333);


B、

func();


C、

func("#",20);


D、

func(5,,9);


【正确答案】:A
【题目解析】:

在C++语言中,可以在声明函数时为形参指定默认值。当调用有默认参数值的函数时,调用语句中可以不给出对应的实参,这就相当于调用该函数时以默认值作为参数。
调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。

本题中,

“func(1,22,333);”是正确的,调用时给出了所有实参,且参数的类型也是匹配的。
“func();”是错误的,声明中参数a没有默认值,调用时必须给出实参值。
“func("#",20);”是错误的,实参表中的字符型实参#赋值给int型形参b,会产生编译错误。 

“func(5,,9);”是错误的,调用时给出的实参应该是连续排列的。


Top