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

    千次阅读 2020-03-22 15:20:05
    文章目录函数的返回值一、什么是返回值?二、为什么要有返回值? 函数的返回值 一、什么是返回值? 函数内部代码经过一些列逻辑处理获得的结果。 def func(): name = 'nick' return name name = func() print...

    函数的返回值

    一、什么是返回值?

    函数内部代码经过一些列逻辑处理获得的结果。

    def func():
        name = 'nick'
        return name
    
    
    name = func()
    print(name)
    nick
    

    二、为什么要有返回值?

    现在有一个需求,比较两个人的月薪,然后想获取月薪较大人的年薪。

    如果需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须要有返回值。

    需要注意的是:

    • return是一个函数结束的标志,函数内可以有多个return,只要执行到return,函数就会执行。
    • return的返回值可以返回任意数据类型
    • return的返回值无个数限制,即可以使用逗号隔开返回多个值
      • 0个:返回None
      • 1个:返回值是该值本身
      • 多个:返回值是元组
    # 为什么要有返回值
    def max_self(salary_x, salary_y):
        if salary_x > salary_y:
            return salary_x
        else:
            return salary_y
    
    
    max_salary = max_self(20000, 30000)
    print(max_salary*12)
    360000
    # 函数返回多个值
    def func():
        name = 'nick'
        age = 19
        hobby_list = ['read', 'run']
        return name, age, hobby_list
    
    
    name, age, hobby_list = func()
    print(f"name,age,hobby_list: {name,age,hobby_list}")
    name,age,hobby_list: ('nick', 19, ['read', 'run'])
    
    展开全文
  • C/C++ 引用作为函数的返回值

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

    特别注意:

    1.引用作为函数的返回值时,必须在定义函数时在函数名前将&

    2.用引用作函数的返回值的最大的好处是在内存中不产生返回值的副本

    //代码来源:RUNOOB
    #include<iostream>
    using namespace std;
    float temp;
    float fn1(float r){
        temp=r*r*3.14;
        return temp;
    } 
    float &fn2(float r){ //&说明返回的是temp的引用,换句话说就是返回temp本身
        temp=r*r*3.14;
        return temp;
    }
    int main(){
        float a=fn1(5.0); //case 1:返回值
        //float &b=fn1(5.0); //case 2:用函数的返回值作为引用的初始化值 [Error] invalid initialization of non-const reference of type 'float&' from an rvalue of type 'float'
                               //(有些编译器可以成功编译该语句,但会给出一个warning) 
        float c=fn2(5.0);//case 3:返回引用
        float &d=fn2(5.0);//case 4:用函数返回的引用作为新引用的初始化值
        cout<<a<<endl;//78.5
        //cout<<b<<endl;//78.5
        cout<<c<<endl;//78.5
        cout<<d<<endl;//78.5
        return 0;
    }

    case 1:用返回值方式调用函数(如下图,图片来源:伯乐在线):

    返回全局变量temp的值时,C++会在内存中创建临时变量并将temp的值拷贝给该临时变量。当返回到主函数main后,赋值语句a=fn1(5.0)会把临时变量的值再拷贝给变量a

    case 2:用函数的返回值初始化引用的方式调用函数(如下图,图片来源:伯乐在线)

    这种情况下,函数fn1()是以值方式返回到,返回时,首先拷贝temp的值给临时变量。返回到主函数后,用临时变量来初始化引用变量b,使得b成为该临时变量到的别名。由于临时变量的作用域短暂(在C++标准中,临时变量或对象的生命周期在一个完整的语句表达式结束后便宣告结束,也就是在语句float &b=fn1(5.0);之后) ,所以b面临无效的危险,很有可能以后的值是个无法确定的值。

     如果真的希望用函数的返回值来初始化一个引用,应当先创建一个变量,将函数的返回值赋给这个变量,然后再用该变量来初始化引用:

      int x=fn1(5.0);
      int &b=x;

     case 3:用返回引用的方式调用函数(如下图,图片来源:伯乐在线)

    这种情况下,函数fn2()的返回值不产生副本,而是直接将变量temp返回给主函数,即主函数的赋值语句中的左值是直接从变量temp中拷贝而来(也就是说c只是变量temp的一个拷贝而非别名) ,这样就避免了临时变量的产生。尤其当变量temp是一个用户自定义的类的对象时,这样还避免了调用类中的拷贝构造函数在内存中创建临时对象的过程,提高了程序的时间和空间的使用效率。

    case 4:用函数返回的引用作为新引用的初始化值的方式来调用函数(如下图,图片来源:伯乐在线)

    这种情况下,函数fn2()的返回值不产生副本,而是直接将变量temp返回给主函数。在主函数中,一个引用声明d用该返回值初始化,也就是说此时d成为变量temp的别名。由于temp是全局变量,所以在d的有效期内temp始终保持有效,故这种做法是安全的。

    3.不能返回局部变量的引用。如上面的例子,如果temp是局部变量,那么它会在函数返回后被销毁,此时对temp的引用就会成为“无所指”的引用,程序会进入未知状态。

    4.不能返回函数内部通过new分配的内存的引用。虽然不存在局部变量的被动销毁问题,但如果被返回的函数的引用只是作为一个临时变量出现,而没有将其赋值给一个实际的变量,那么就可能造成这个引用所指向的空间(有new分配)无法释放的情况(由于没有具体的变量名,故无法用delete手动释放该内存),从而造成内存泄漏。因此应当避免这种情况的发生

    5当返回类成员的引用时,最好是const引用。这样可以避免在无意的情况下破坏该类的成员。

    6.可以用函数返回的引用作为赋值表达式中的左值

    #include<iostream>
    using namespace std;
    int value[10];
    int error=-1;
    int &func(int n){
        if(n>=0&&n<=9)
            return value[n];//返回的引用所绑定的变量一定是全局变量,不能是函数中定义的局部变量 
        else
            return error;
    }
    
    int main(){
        func(0)=10;
        func(4)=12;
        cout<<value[0]<<endl;
        cout<<value[4]<<endl;
        return 0; 
    }

    D.用引用实现多态

    在C++中,引用是除了指针外另一个可以产生多态效果的手段。也就是说一个基类的引用可以用来绑定其派生类的实例

    class Father;//基类(父类)
    class Son:public Father{.....}//Son是Father的派生类
    Son son;//son是类Son的一个实例
    Father &ptr=son;//用派生类的对象初始化基类对象的使用

    特别注意:

    ptr只能用来访问派生类对象中从基类继承下来的成员如果基类(类Father)中定义的有虚函数,那么就可以通过在派生类(类Son)中重写这个虚函数来实现类的多态。

     

     
    展开全文
  • 通常我们希望通过函数调用使主调函数能得到一个确定的值,这就是函数的返回值函数的返回值是通过函数中的 return 语句获得的。return 语句将被调函数中的一个确定的值带回到主调函数中,供主...

    看旋转编码器程序的时候,遇见了一些关于函数返回值的函数,感觉很懵逼,就百度了一下C语言函数调用,感觉写的挺好的,

    原链接:http://c.biancheng.net/view/204.html

     

    通常我们希望通过函数调用使主调函数能得到一个确定的值,这就是函数的返回值。函数的返回值是通过函数中的 return 语句获得的。return 语句将被调函数中的一个确定的值带回到主调函数中,供主调函数使用

    函数的返回值类型是在定义函数时指定的。return 语句中表达式的类型应与定义函数时指定的返回值类型一致。如果不一致,则以函数定义时的返回值类型为准,对 return 语句中表达式的类型自动进行转换,然后再将它返回给主调函数使用。但是建议初学者在编程的时候,务必要保持它们两个类型一致。
     

    在调用函数时,如果需要从被调函数返回一个值供主调函数使用,那么返回值类型必须定义成非 void 型。此时被调函数中必须包含 return 语句,而且 return 后面必须要有返回值,否则就是语法错误。

    如果函数有返回值,那么 return 语句后面的括号可以不要,比如“return(z);”等价于“return z;”。若不需要返回值则可以不要 return 语句。

    需要强调的是,一个函数中可以有多个 return 语句,但并不是所有的 return 语句都起作用。执行到哪个 return 语句,就是哪个 return 语句起作用,该 return 语句后的其他语句就都不会执行了。

    return是如何将值返回给主调函数的

    我们知道,被调函数运行结束后才会返回主调函数,但是被调函数运行结束后系统为被调函数中的局部变量分配的内存空间就会被释放。也就是说,return 返回的那个值在被调函数运行一结束就被释放掉了,那么它是怎么返回给主调函数的呢?

    事实上在执行 return 语句时系统是在内部自动创建了一个临时变量,然后将 return 要返回的那个值赋给这个临时变量。所以当被调函数运行结束后 return 后面的返回值真的就被释放掉了,最后是通过这个临时变量将值返回给主调函数的。而且定义函数时指定的返回值类型实际上指定的就是这个临时变量的类型。这些都是系统自动完成的,了解即可。

    这也是为什么当 return 语句中表达式的类型和函数返回值类型不一致时,将 return 的类型转换成函数返回值类型的原因。return 语句实际上就是将其后的值赋给临时变量,所以它要以临时变量的类型为准,即函数返回值的类型。

    展开全文
  • link中不能定义构造函数的返回值?为什么构造函数没有返回值?
  • 函数的返回值 什么是返回值 为什么要返回值 函数调用 函数的返回值 什么是返回值 返回值就是函数内部代码运行后的一个结果 def self_sum(x,y): res = x+y return res num = self_s...

    函数的返回值

    什么是返回值

    返回值就是函数内部代码运行后的一个结果

    def self_sum(x,y):
        res = x+y
        return res
    
    num = self_sum(2,6)
    print(num)
    8

    为什么要返回值

    • 我们写函数并不是单纯的只是想要一个结果,我们可能还要对函数的运行结果进行下一步处理,此时就需要函数返回一个值了
    • 注意:
      • return是一个函数结束的标志,一个函数内可以有多个return,但只要执行到return就直接停止了
      • return可以返回任意数据类型
      • return可以返回多个值,默认返回是None,一个值返回的是值本身,多个值则以元组的方式进行返回
    def self_sum(x,y):
        res = x+y
        return x,y,res
    
    num = self_sum(2,6)
    print(num)
    (2, 6, 8)

    函数调用

    • 之前写了,函数名和变量名一样,所以函数名就可以看成一个变量
    def self_max(x, y):
        if x > y:
            return x  # 100 # 返回一个值,给函数名
        else:
            return y
    # 1
    self_max(2,6)
    
    # 2
    x = self_max(10, 100)
    print(x)
    
    # 3
    self_max(self_max(5,29),13)
    100
    
    
    
    
    
    29

    转载于:https://www.cnblogs.com/Hades123/p/10997786.html

    展开全文
  • JavaScript函数的返回值

    千次阅读 2019-05-26 15:30:44
    函数的返回值 当函数执行完的时候,并不是所有时候都要把结果打印。我们期望函数给我一些反馈(比如计算的结果返回进行后续的运算),这个时候可以让函数返回一些东西。也就是返回值。函数通过return返回一个...
  • 函数的返回值和参数

    万次阅读 多人点赞 2018-06-06 20:35:57
    一:函数的返回值1、什么是返回值 返回值是一个函数的处理结果,2、为什么要有返回值 如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值3、函数的返回值的应用 函数的返回值用...
  • js函数的返回值

    千次阅读 2019-09-26 14:16:04
    函数的返回值 函数是做某件事或者实现某种功能 function cook(aru){ console.log(aru) } cook('哈哈哈') 函数返回格式 function 函数名(){ return 需要返回的结果 } return 终止函数 function fn...
  • C++ main函数的返回值

    千次阅读 多人点赞 2017-04-10 11:04:53
    main函数通过返回值把整个程序的执行情况告诉调用者(通常是操作系统,但是操作系统通常会忽视main函数的返回值),一般情况下return 0表示正常结束,return -1表示非正常结束。  main函数也可以不写return语句,...
  • 函数的返回值类型

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

    2019-11-17 10:38:57
    宏函数中最后一个表达式的值,即为宏函数的返回值。 该值的类型,即为宏函数的返回类型。 #define Min(x, y) ((x)<(y)?(x):(y) int main() { int a = 10; int b = 20; int c = Min(10, 20); return 0; }...
  • 深度剖析c语言main函数---main函数的返回值

    万次阅读 多人点赞 2018-07-09 23:19:06
    本文主要聊聊main函数的返回值。 main函数的返回值  main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出。返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。 void main...
  • 构造函数的返回值

    2020-07-12 17:35:30
    构造函数的返回值,几种情况: 1.没有返回值,默认返回this对象 var a = function(){ this.x=3 var y =4 a.prototype.z=5 } var b = new a() console.log(b) //a {x: 3} 2.有返回值,return,但是是基础值类型的,...
  • 关于printf函数的返回值

    千次阅读 多人点赞 2019-01-06 20:54:38
    初学C语言时用的最多的函数就是printf函数,而printf函数的返回值是被大多数人忽略的,以至于很多应聘者在碰到关于printf返回值的编程时一头雾水。确实很少人会注意到这个,接下来就谈一谈printf返回值的问题。 先看...
  • js中函数的返回值return

    千次阅读 2017-06-30 11:26:22
    js中函数的返回值:return 一、函数的返回值需要注意的几点:  1、函数名+括号:如fn1() == return 后面的值  2、所有函数默认返回值:都是未定义 undefined  3、return 后面的任何代码都不执行了  二、...
  • shell脚本——如何获取函数的返回值

    万次阅读 多人点赞 2018-06-07 16:35:17
    下面分开来讲一下如何捕获函数的返回值。 (1)函数中使用return返回函数值时,通过 echo $? 来捕获函数返回值。请看脚本 bash1.sh #!/bin/bash function func1(){ count=0 for cont in {1..3}; ...
  • vb中连接两个函数返回值的方式是什么,怎么将两个函数的返回值结合起来,怎么实现不同类型的函数的调用?
  • python 函数的嵌套定义 and 函数的返回值是函数
  • python函数 - 13 函数的返回值(return)

    千次阅读 2018-05-17 18:57:01
    函数的返回值1.函数的返回值:定义: 函数的返回值就是函数调用表达式的值/也是return关键字后的表达式的值.(1)没有return的函数 def func1(): print('123') func1() #&gt;&gt;&gt;123 # 这个就是函数...
  • 在“C++函数的返回值(上)”中,介绍了函数返回值是非const类型的情况。本文将介绍函数返回值是值类型且为const的情况,返回值是引用类型且为const的情况将在“C++函数的返回值(下)”中介绍。1 返回值是const...
  • 关于宏函数的返回值

    千次阅读 2018-05-09 17:04:18
    宏函数与普通函数 // 宏函数 #define Min(x, y) \ ((x)&lt;(y)?(x):(y)) // 普通函数 int Min(int x, int y) { return x &lt;...那么宏函数的返回值是什么? **答:宏函数中最后一...
  • opencv的waitkey函数的返回值解释

    千次阅读 2020-01-10 15:16:19
    其实只要将返回值打印出来看一下就知道,waitkey函数的返回值(在按了按键的前提下)就是对应按键的ASCAII码,而且是区分大小写的。 由于ascaii码中没有ctrl和alt等按键,所以单独按了这些按键,waitkey函数不会返回...
  • 字符指针函数的返回值问题 今天学弟问了这么一道问题,为什么指针类型的函数返回值不是指针而是一串字符,一开始我也很好奇为什么?后来看了一下原题,发现这个函数是一个字符指针函数,返回值是一个字符串,这就说...
  • 使用临时对象(temporary object)来保存函数的返回值函数的返回值用于初始化调用点的一个临时对象,该临时对象就是函数调用的结果。如 int func() { return 1; } int i = func();此时,有一个临时对象用来保存...
  • 可以把函数定义为引用类型,这时函数的返回值即为某一变量的引用(别名),因此,它相当于返回了一个变量,所以可对其返回 值进行赋值操作。这一点类同于函数的返回值为指针类型。 由于函数调用返回的引用类型是在...
  • 函数的返回值怎么带出来? &lt;= 4字节 通过寄存器带出来 &gt;4 &lt;=8 字节 通过两个寄存器带出来 &gt;8 字节 通过产生临时量,此时返回值太大,寄存器已经没有足够的内存存放它 临时量是什么...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,660
精华内容 42,264
关键字:

函数的返回值