更多“函数不能作为返回值”相关问题
  • 第1题:

    下列关于函数的描述中,错误的是( )。 A.函数可以没有返回值B.函数可以没有参数

    下列关于函数的描述中,错误的是( )。

    A.函数可以没有返回值

    B.函数可以没有参数

    C.函数可以是一个类的成员

    D.函数不能被定义为模板


    正确答案:D
    D。【解析】函数可以被定义为模板;“template<模板形参表><返回值类型><函数名>(模板函数形参表){//函数定义体},”其中<摸板形参表>是由一个或多个<模板形参>组成,每个<模板形参>可以有这几种形式:typename.(参数名>,class<(参数名>,<类型修饰><参数名>;前两种是等价的typename和Class可以互换,它们的参数为虚拟类型参数;最后一种参数是常规参数。

  • 第2题:

    在函数的返回值类型与返回值表达式类型的描述中,错误的是( )。

    A.函数返回值的类型是在定义函数时确定的,在函数调用时是不能改变的

    B.函数返回值的类型就是返回值表达式的类型

    C.函数返回值的类型与返回值类型不同时,函数表达式类型应转换成返回值类型

    D.函数返回值的类型决定了返回值表达式的类型


    正确答案:B

  • 第3题:

    将“引用”作为函数返回值类型的格式、好处和需

    要遵守的规则?


    正确答案:

     

    格式:类型标识符 &函数名(形参列表及类型说明)
    { //函数体}
    好处:在内存中不产生被返回值的副本;(注意:
    正是因为这点原因,所以返回一个局部变量的引用
    是不可取的。因为随着该局部变量生存期的结束,
    相应的引用也会失效,产生runtime error!
    注意事项:
    (1)不能返回局部变量的引用。这条可以参照
    Effective C++[1]的Item 31。主要原因是局部变量会
    在函数返回后被销毁,因此被返回的引用就成为了
    "无所指"的引用,程序会进入未知状态。
    (2)不能返回函数内部new 分配的内存的引用。
    这条可以参照Effective C++[1]的Item 31。虽然不
    存在局部变量的被动销毁问题,可对于这种情况
    (返回函数内部new 分配内存的引用),又面临其
    它尴尬局面。例如,被函数返回的引用只是作为一
    个临时变量出现,而没有被赋予一个实际的变量,
    那么这个引用所指向的空间(由new分配)就无法
    释放,造成memory leak。
    (3)可以返回类成员的引用,但最好是const。这
    条原则可以参照Effective C++[1]的Item 30。主要
    原因是当对象的属性是与某种业务规则(business
    rule)相关联的时候,其赋值常常与某些其它属性
    或者对象的状态有关,因此有必要将赋值操作封装
    在一个业务规则当中。如果其它对象可以获得该属
    性的非常量引用(或指针),那么对该属性的单纯
    赋值就会破坏业务规则的完整性。
    (4)流操作符重载返回值申明为“引用”的作用:
    流操作符<<和>>,这两个操作符常常希望被连续使
    用,例如:cout << "hello" << endl; 因此这两个操
    作符的返回值应该是一个仍然支持这两个操作符
    的流引用。可选的其它方案包括:返回一个流对象
    和返回一个流对象指针。但是对于返回一个流对
    象,程序必须重新(拷贝)构造一个新的流对象,
    也就是说,连续的两个<<操作符实际上是针对不同
    对象的!这无法让人接受。对于返回一个流指针则
    不能连续使用<<操作符。因此,返回一个流对象引
    用是惟一选择。这个唯一选择很关键,它说明了引
    用的重要性以及无可替代性,也许这就是C++语言
    中引入引用这个概念的原因吧。赋值操作符=。这
    个操作符象流操作符一样,是可以连续使用的,例
    如:x = j = 10;或者(x=10)=100;赋值操作符的返回值
    必须是一个左值,以便可以被继续赋值。因此引用
    成了这个操作符的惟一返回值选择。
    例3
    #i nclude <iostream.h>
    int &put(int n);
    int vals[10];
    int error=-1;
    void main()
    {
    put(0)=10; //以put(0)函数值作为左值,等价于
    vals[0]=10;
    put(9)=20; //以put(9)函数值作为左值,等价于
    vals[9]=20;
    cout<<vals[0];
    cout<<vals[9];
    }
    int &put(int n)
    {
    if (n>=0 && n<=9 ) return vals[n];
    else { cout<<"subscript. error"; return error; }
    }
    (5)在另外的一些操作符中,却千万不能返回引
    用:+-*/ 四则运算符。它们不能返回引用,Effective
    C++[1]的Item23详细的讨论了这个问题。主要原因
    是这四个操作符没有side effect,因此,它们必须构
    造一个对象作为返回值,可选的方案包括:返回一
    个对象、返回一个局部变量的引用,返回一个new
    分配的对象的引用、返回一个静态对象引用。根据
    前面提到的引用作为返回值的三个规则,第2、3
    两个方案都被否决了。静态对象的引用又因为((a+b)
    == (c+d))会永远为true而导致错误。所以可选的只
    剩下返回一个对象了。

  • 第4题:

    下列关键字不能作为函数返回值类型的是( )。

    A.float

    B.int

    C.double

    D.virtual


    正确答案:D
    解析:virtual是虚函数的标志,而不是返回值的标志。

  • 第5题:

    在一个被调用函数中,关于return语句使用描述,( )是正确的。

    A.函数返回值的类型是在定义函数时确定,在函数调用时是可能改变的

    B.函数返回值的类型就是返回值表达式的值

    C.函数返回值的类型决定了返回值表达式的类型

    D.函数返回值的类型可以与返回值表达式的类型不一致


    正确答案:C
    解析:函数返回值的类型决定了返回值表达式的类型。

  • 第6题:

    若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )

    A.函数调用可以作为独立的语句存在
    B.函数调用可以无返回值
    C.函数调用可以出现在表达式中
    D.函数调用可以作为一个函数的形参

    答案:D
    解析:

  • 第7题:

    有返回值函数不能返回给主调函数值。


    正确答案:错误

  • 第8题:

    函数可以作为返回值


    正确答案:正确

  • 第9题:

    C++函数必须有返回值,否则不能使用函数。


    正确答案:错误

  • 第10题:

    以返回值的角度,函数分为()

    • A、系统函数
    • B、无返回值函数
    • C、有返回值函数
    • D、自定义函数

    正确答案:B,C

  • 第11题:

    单选题
    在下面的保留字中,不能作为函数的返回值类型的是()。
    A

    void

    B

    int

    C

    enum

    D

    long


    正确答案: B
    解析: 暂无解析

  • 第12题:

    判断题
    C++函数必须有返回值,否则不能使用函数。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第13题:

    return作为关键字在函数中起到了返回值的作用,没有return函数肯定不能返回值。()

    此题为判断题(对,错)。


    参考答案:×

  • 第14题:

    下列不能作为函数返回值的是( )。

    A.void

    B.long

    C.new

    D.int


    正确答案:C
    解析:在C++中,new是运算符,因此不能作为函数的返回值类型参与函数的定义。

  • 第15题:

    下列说法中不正确的是A.C语言规定,不能在一个函数的内部再定义函数B.在没有声明函数返回值类型的情况下,默认的函数返回值类型为int型C.函数的类型可以是整型、实型、字符型,但不能是指针型D.函数可以没有形参,但函数名后的一对圆括号不能省略


    正确答案:C
    本题主要考查函数定义的基本知识。函数是C语言的基本组成部分,用来完成子程序的功能。一个完整的C程序包括一个main()函数(主函数)和若干个其他函数,C程序从main()函数开始执行。
    在C语言中,函数定义是平行的,函数不能嵌套定义,即一个函数不能在另一个函数内部定义,函数之间没有从属关系。函数定义表达的一般形式为:
    <函数返回值类型> 函数名(<类型名><形式参数1>,<类型名> <形式参数2>, ……)
    {
        函数体变量定义部分;
        函数体语句部分;
    }
    其中,<函数返回值类型>部分可以省略,默认为整型。函数返回值类型可以为各种整型、字符型、实型,还可以是指针类型。这里需要注意,在定义没有形参的函数时,函数的括号不能没有,如果没有,就不是函数了,很有可能被当成变量处理。

  • 第16题:

    不能作为函数重载判断依据的是( )。

    A.返回值

    B.参数个数

    C.参数类型

    D.参数顺序


    正确答案:A
    解析:调用重载函数,编译器检查调用中的参数个数、类型和顺序。

  • 第17题:

    以下对C++语言函数的有关描述中,正确的是( )

    A.在C++语言中调用函数,只能把实参的值传给形参,形参的值不能传送给实参
    B.C++语言函数既可以嵌套定义又可以递归调用
    C.函数必须无返回值,否则不能使用函数
    D.函数必须有返回值,返回值类型不定

    答案:A
    解析:

  • 第18题:

    在下面的保留字中,不能作为函数的返回值类型的是()。

    Avoid

    Bint

    Cenum

    Dlong


    C

  • 第19题:

    关于函数的返回值,以下描述中错误的是() 

    • A、如果函数定义中有返回值,那么函数中就必须保证任何情况下都能通过return语句返回一个值,否则编译时会出错
    • B、一个函数中只能有一条return语句,而且它必须位于函数的最后一行
    • C、如果函数定义中没有返回值,那么这个函数就不能用return语句返回
    • D、如果函数定义中有返回值,那么这个函数就必须通过return语句返回一个值
    • E、函数通过return语句返回值

    正确答案:B,C

  • 第20题:

    系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是()

    • A、参数个数
    • B、参数类型
    • C、函数名称
    • D、函数的返回值类型

    正确答案:D

  • 第21题:

    函数必须有返回值,否则不能正确使用


    正确答案:错误

  • 第22题:

    单选题
    以下叙述中正确的是(  )。
    A

    函数的返回值不能是结构体指针类型

    B

    函数的返回值不能是结构体类型

    C

    在调用函数时,可以将结构体变量作为实参传给函数

    D

    结构体数组不能作为参数传给函数


    正确答案: D
    解析:
    C项正确,结构体变量作为实参时,是传值形式调用;AB两项错误,函数的返回值可以是结构体变量和结构体指针变量;D项错误,向函数传递结构体数组名时,传递的是实参结构体数组的首地址,是传引用形式调用。答案选择C选项。

  • 第23题:

    单选题
    系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是()
    A

    参数个数

    B

    参数类型

    C

    函数名称

    D

    函数的返回值类型


    正确答案: D
    解析: 暂无解析