精华内容
下载资源
问答
  • 函数返回值类型

    千次阅读 2019-01-22 15:39:53
    函数返回值是引用这一类型的时候,在别处看到的准则是要求在函数参数中,包含有以引用方式或指针方式需要作为返回值的参数。 但在实验中int ,char等这些类型即使没有这个参数也可以返回正确的值如: int& ...

    函数的返回值
    1, 返回引用类型
    在函数返回值是引用这一类型的时候,在别处看到的准则是要求在函数参数中,包含有以引用方式或指针方式需要作为返回值的参数。
    但在实验中int ,char等这些类型即使没有这个参数也可以返回正确的值如:
    int& fun()
    {
    Int a = 1;
    return a;
    }
    int main()
    {
    Int &a =fun();

    }
    这里int& a是可以得到正确值的。换成char
    也是一样
    但是如果是std::string类型的就不能得到正确的值,还不明白是为什么。
    2, 返回非引用类型
    这种情况可以把函数的局部变量作为返回值返回。
    因为在fun函数返回前,会拷贝构造一个无名的对象中,返回的是这个对象,
    Int a = fun()这个语句执行完,才会释放这个无名对象。

    展开全文
  • 详解函数返回值类型和return语句

    万次阅读 多人点赞 2019-03-10 15:57:59
    返回值类型 没有返回值的return语句只能返回类型是void函数。返回void的函数不要求非得有return语句,编译器会在void函数的最后一句加上一个return语句。 可以使用return语句,在void函数中提前退出。与在迭代...

    返回类型和return语句

    return语句的功能就是终止当前程序的函数,返回调用函数的地方。

    语法形式:return;或者return expression;

    无返回值类型

    没有返回值的return语句只能返回类型是void函数。返回void的函数不要求非得有return语句,编译器会在void函数的最后一句加上一个return语句。

    可以使用return语句,在void函数中提前退出。与在迭代语句中使用break语句一样,退出迭代。

    使用return expression的话,expression必须返回的是一个void的函数,强行令void函数返回其他类型的表达式将产生错误。

    有返回值函数

    只要函数的返回类型不是void,则return语句必须返回一个值。返回的值要么与函数的返回类型相同,要么能进行隐式地转换为函数的返回类型。

    虽然C++无法确定结果的正确性,但是可以保证每个return语句的结果类型相同

    含有return语句的循环后面也应该有一条return语句,如果没有的话该程序就是错误的。并且编译器很难发现这个错误。

    1、值是如何被返回的:

    函数的返回值是用于初始化调用点的一个临时量的,该临时量就是函数调用的结果。

    如果函数的形参和返回类型都是引用类型的话,则无论是调用函数还是返回结果都不会真正拷贝对象。

    2、不要返回局部对象的引用或指针:

    函数调用完成,函数体内的局部变量的内存被释放了,因为局部变量的生命期仅存在于函数的作用域。如果返回值的类型为引用或指针的话,该局部变量消失,调用函数得到的引用绑定的对象不再存在,即引用无效,或者调用函数得到的指针也将指向一个不存在的对象

    解决方法:引用所引的是函数开始之前就存在的对象,则该引用有效,比如引用的是实参,实参定义在main函数中。指针与引用类似,需指向函数前已存在的值才有效,比如指向的是实参。

    3、返回类类型的函数和调用运算符:

    函数调用运算符:点运算符和箭头运算符。二者的优先级相同,且都满足左结合率。

    4、引用返回左值:

    函数的返回类型得到的是左值,即调用该函数时,该函数出现在=的左侧,右值用来初始化。其实也很好理解,引用一般是作为左值进而修改所绑定对象的值的。

    左值:用的是对象的身份(对象在内存中的位置) 右值:用的是对象的值(内容)

    函数的返回类型决定于函数调用是否使用左值。如果调用的函数返回类型是引用,则这个引用的函数得到左值,其他类型得到右值。

    普通引用返回类型可以给调用函数点赋值,因为对象的别名可以进行赋值操作。

    常量引用不能给调用函数点赋值,因为它已经和实参绑定了,由于它的常量性质,所以就不能在改变了。

    5、列表初始化返回值:

    C++11新标准规定,函数可以返回花括号包围起来的列表。此处的列表也用来对函数返回的临时两进行初始化。如果列表为空,临时量则执行值初始化(int类型为初始化0,string类型初始化为空字符串),否则,返回的值由函数的返回类型决定。

    如果函数返回的是内置类型,则花括号包围起来的列表最多包含一个值,并且该值所占的空间不应该大于目标类型的空间。如果函数返回的是类类型,由函数本身定义初始值如何使用。

    6、主函数main的返回值:

    main函数可以没有return语句就直接结束。如果控制到达了main函数的结尾处并且没有return语句时,编译器将隐型地加入return 0这个语句。

    头文件cstdlib定义了两个预处理变量来表示函数成功和失败,EXIT_FAILURE和EXIT_SUCCESS

    由于这两个是预处理变量,所以不需要前面加上std::,也不能在using声明中

    递归:函数直接或间接的调用了它自身。main函数不能调用它自己。

    的是函数开始之前就已经存在的对象,则该引用有效;如果引用的是局部变量,则随着函数的结束局部变量也失效了,此时返回的引用无效。

    当不希望返回的对象被修改时,返回对常量的引用。

    函数不能返回数组==。但是可以返回数组的指针或引用,从语法上来讲比较繁琐,最直接的方法是适用类型别名

    typedef int arrT[10];//arrT是一个类型别名,表示的类型是含有10个整数的数组
    
    using arrT=int [10];//arrT表示含10个整数的数组
    arrT *func(int i);//func返回的是一个指向含有10个整数的数组的指针
    

    声明一个返回数组指针的函数:

    如果想定义一个返回数组指针的函数,则==数组的维度必须跟在函数的名字后面。==函数的形参列表也跟在函数的名字后面形参列表应该先于数组的维度

    语法形式:Type (* function(parameter_list)) [dimension];

    基本数据类型 (* 函数名(形参列表)) [数组的维度]

    (* function(paramenter_list))两端的括号必须存在

    int (*func(int i)) [10];
    

    1:func(int i)表示调用func函数时需要一个int类型的实参

    2:(* func(int i))表示我们可以对函数调用的结果执行解引用操作

    3:(* func(int i)) [10]表示解引用func的调用将得到一个大小是10的数组

    4:int (* func(int i)) [10]表示数组中的元素是int类型

    使用尾置返回类型:

    C++11新标准通过使用尾置返回类型来简化func声明。任何函数的定义都可以使用尾置返回,对于复杂的数组的指针与数组的引用,语法形式如下:

    auto func(int i)->int(*) [10];//func接收一个int类型的实参,返回一个指针,该指针指向含有10个整数的数组

    使用decltype:

    如果知道指针指向那个数组,则可以使用decltype关键字声明其返回类型。

    decltype关键字得到的是数组类型int [],并不是指针类型,所以使用者需要手动加上*型号。

    不需要实参调用func函数,(&func())表示函数返回的是一个引用,(&func()) [10]表示引用的对象是维度为10的数组,string (&func()) [10]表示数组的元素是string对象。

    string (&func()) [10];
    
    展开全文
  • link中不能定义构造函数返回值?为什么构造函数没有返回值
  • 关于函数返回值类型

    2020-03-31 21:45:07
    关于函数返回值类型 这里使用了auto 来自动推导函数power的返回值类型,在函数的定义中,a的负数次方是double类型的返回值,因此在这里函数的返回值类型应该为double,而使用return 1,1默认为int类型,返回值不...

    关于函数返回值类型

    在这里插入图片描述
    这里使用了auto 来自动推导函数power的返回值类型,在函数的定义中,a的负数次方是double类型的返回值,因此在这里函数的返回值类型应该为double,而使用return 1时,1默认为int类型,返回值不相同,而函数只能返回一种类型,因此要把return 1强制转换为double类型。

    展开全文
  • VB编程怎么在返回值的类型中再嵌套一个函数返回值类型?我想返回给几个控件应该怎么做?
  • vb函数结合的情况下函数返回值类型怎么使用dim语句修饰,怎么使用dim语句修饰一个函数调用的返回值?
  • C++中函数返回值类型

    千次阅读 2018-06-28 17:01:59
    C++中任何一个程序有且...被调函数的的返回值可有可无,但是被调函数作为表达式,必须要有返回值来返回给主调函数,此时其返回值类型可以为各种类型,如:double ,bool, int 等等。而main函数的返回值一般为i...

    C++中任何一个程序有且只能有一个main函数。

    其中main函数的返回值类型必须为 int main函数返回值是返回到操作系统,给这个程序的下一个(系统)程序用,用于传递运行成功或失败等信息。

    在大多数系统中,main 函数的返回值被用来指示状态。返回0表示成功,非0 的返回值的含义由系统来定义,通常用来指出错误的类型。

    被调函数的的返回值可有可无,但是当被调函数作为表达式时,必须要有返回值来返回给主调函数,此时其返回值类型可以为各种类型,如:double ,bool, int 等等。而main函数的返回值为int 。若其作为语句块,则返回值可有可无。

    展开全文
  • 赋值运算符函数返回值类型详解

    千次阅读 2014-08-02 21:06:09
    在c++赋值运算符函数的学习中,对于返回值类型的问题,一直非常费解,今天彻底总结一些每种不同返回值类型的结果: 1、返回值为空: void hasptr::operator=(const hasptr& s) 这个时候如果只有一个‘=’...
  • 函数返回值类型

    千次阅读 2014-10-31 17:57:19
    没有发现,编译器根本不对函数头中的返回值类型进行检查?
  • C++函数返回值类型

    千次阅读 2014-09-05 20:24:55
    C++语言的函数返回值类型可以分为内部类型和自定义类型两大类。  在函数返回内部类型中不能返回数组类型但可以返回指向数组的指针,同样也可以返回指向函数的函数指针。如果希望返回值可以作为左值(即可以放在...
  • python中函数返回值类型

    万次阅读 2018-04-06 20:22:57
    import os import sys def AddSubMul (x= 8 ,y= 4 ) : return ((x+y),(x-y),(x*y)) def AddSubMul2 (x= 8 ,y= 4 ...使用def定义的返回值可以是tuple也可以是List。还可以是dict嘛?
  • vb中可以使用dim语句来修饰一个函数返回值类型么?怎么让mid函数返回一个integer类型或者single类型呢?
  • Result_of:使用了复杂的技巧来自动推导函数返回值类型Ref:可以包装对象的引用,在传递参数消除对象拷贝的代价,或者将不可拷贝的对象变为可以拷贝Bind:是C++98标准库中函数适配器的增量,可以适配任意的可调用...
  • 函数返回值

    千次阅读 多人点赞 2019-06-30 18:52:19
    1.什么是函数返回值? print 和 return 的区别,print 仅仅是打印在控制台,而 return 则是将 return 后面的...如果一个函数没有 reutrn 语句,其实它有一个隐含的 return 语句,返回值是 None,类型也是 ‘None...
  • c/c++中const成员函数返回值类型

    千次阅读 2017-01-05 20:31:21
    那么对于const函数返回值呢? 结合网上内容,写了一个小的实验代码, class T{ public: struct pNode{ int x; int y; }; //不规划的构造 T(){ p = new pNode; p->x = 1; p->y = 2; } //在
  • 函数返回值类型问题

    千次阅读 2012-02-20 14:02:47
    如果函数返回值是一个对象,有些场合用“引用传递”替换“值传递”可以提高效率。而有些场合只能用“值传递”而不能用“引用传递”,否则会出错。 例如: class String {... // 赋值函数 String & operate=...
  • C/C++ 引用作为函数返回值

    万次阅读 多人点赞 2018-08-04 13:19:48
    1.引用作为函数返回值时,必须在定义函数时函数名前将& 2.用引用作函数返回值的最大的好处是在内存中不产生返回值的副本 //代码来源:RUNOOB #include<iostream> using namespace ...
  • C/C++中main函数返回值类型

    千次阅读 2010-12-30 16:30:00
    main 函数返回值应该定义为 int 类型,C 和 C++ 标准中都是这样规定的。
  • 当函数返回非引用类型时,其返回值既可以是局部对象也可以是求解表达式的结果 二、返回引用类型 返回引用类型时没有复制返回值,而是返回对象本身 不能返回局部对象的引用,不能返回指向局部对象的指针 返回...
  • 可以使用 return 来设置函数返回值 语法: return 值 return后的值将会作为函数的执行结果返回, 可以定义一个变量,来接收该结果 在函数中return后的语句都不会执行 如果return语句后不跟任何值就相当于返回一个...
  • 可以把函数定义为引用类型,这时函数返回值即为某一变量的引用(别名),因此,它相当于返回了一个变量,所以可对其返回 值进行赋值操作。这一点类同于函数返回值为指针类型。 由于函数调用返回的引用类型是在...
  • main函数返回值类型为何是int型?

    千次阅读 2019-03-23 10:21:34
    在 C/C++ 中,将main函数定义成 void main() 。然而这种做法是错误的!因为在 C/C++ 标准中,从来没有定义过 void main() 这样的代码形式。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 "The ...
  • 看旋转编码器程序的时候,遇见了一些关于函数返回值的函数,感觉很懵逼,就百度了一下C语言函数调用,感觉写的挺好的, 原链接:http://c.biancheng.net/view/204.html   通常我们希望通过函数调用使主调函数能...
  • proc(int k)//很显然根据主调函数返回值类型知道这里缺少类型 { int n;float s,w,p,q; n=1; s=1.0; while(n){ w=2.0*n; p=w-1.0; q=w+1.0; s=s*w*w/p/q; n++; } return s; } void main(){ system(...
  • 1、函数的返回类型为非引用类型  当函数的返回类型为非引用类型时,其返回值可以是局部对象,也可以是求解... 当函数返回类型为引用类型时没有复制返回值,相反,其返回的就是对象本身。千万不要返回局部对象的引

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 849,130
精华内容 339,652
关键字:

当函数没有返回值类型时