参考答案和解析
正确答案: C
更多“考虑函数原型void test(int a,int b=7,char="*"),下面的函数调用中,属于不合法调用 ”相关问题
  • 第1题:

    考虑下面的函数原型: void f(int a,int b=7,char c='@'); 下面的函数调用中,不合法的是

    A.f(5)

    B.f(5,8)

    C.f(6,'&')

    D.f(0,0,'@')


    正确答案:C
    解析:当一个函数中有多个默认参数时,则形参分布中默认参数应从右到左逐渐定义。在函数调用时,系统按从左到右的顺序将实参与形参结合,当实参的数组不足时,系统将按同样的顺序用说明或定义中的默认值来补齐所缺少的参数。在C)选项中,函数调用中只有两个实参,系统按从左到右的顺序将实参与形参结合时,实参'&'将赋值给血型形参b,显然则是非法的。

  • 第2题:

    已知函数fun的原型为

    int fun(int,int,int);

    下列重载函数原型中错误的是

    A.char fun(int,int);

    B.double fun(int,int,double);

    C.int fun(int,char木);

    D.float fun(int,int,int);


    正确答案:D
    解析:重载函数至少要在参数个数或参数类型上有所不同。选项D)的重载函数只有返回值不同,其他(参数个数及类型)完全相同。因此,本题答案为D)。

  • 第3题:

    考虑函数原型voidtest(inta,intb=7,charz='*'),下面的函数调用中,属于不合法调用的是( )。

    A.test(5);

    B.test(5,8);

    C.test(6,'#');

    D.test(0,0,'*');


    正确答案:C
    C。【解析】题中函数声明带有默认参数,那么在C选项的调用中,将会把字符型实参#赋值给整型形参b,这不符合参数传递规则。

  • 第4题:

    考虑函数原型voidtest(inta,intb=7,charz=*),下面的函数调用中,属于不合法调用的是( )。

    A.test(5);

    B.test(5,8);

    C.test(6,#);

    D.test(0,0,*);


    正确答案:C
    C。【解析】题中函数声明带有默认参数,那么在C选项的调用中,将会把字符型实参#赋值给整型形参b,这不符合参数传递规则。

  • 第5题:

    考虑函数原型void test(int a, int b=7,char z='*'),下面的函数调用中,属于不合法调用的是

    A.test(5);

    B.test(5,8);

    C.test(6,'#');

    D.test(0,0,'*');


    正确答案:C
    解析:本题考核函数的调用。题中函数声明带有默认参数,那么在C选项的调用中,将会把字符型实参#赋值给整型形参b,这不符合参数传递规则。