更多“考虑函数原型void test(int a,int b=7, char z='*'下面的函数调用中,属于不合法调用的是A.test(5 ”相关问题
  • 第1题:

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

    A.testDefaulParam(5);

    B.testDefaulParam(5,8);

    C.testDefaulParam(6,'#');

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


    正确答案:C

  • 第2题:

    考虑下面的函数原型: 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,显然是非法的。

  • 第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,这不符合参数传递规则。