函数返回值与参数传递

本文详细介绍了函数返回值的基本理解,强调了返回值会被复制到临时内存单元,调用函数通过该内存单元获取返回值。对于局部变量,若返回其引用可能导致数据丢失。通过实例演示了类型匹配和不匹配时的参数传递过程,讨论了引用与指针的区别,以及引用传递的各种情况,包括引用作为参数和返回值时的效率优势。
摘要由CSDN通过智能技术生成
  • 函数返回值基本理解

    函数返回的不管是指针还是数值,通常,函数将返回值复制到指定的CPU寄存器或内存单元中来将其返回。随后,调用程序将查看内存单元。返回函数与调用函数必须就该内存单元中存储的数据的类型达成一致。函数原型将返回值类型告知调用函数,而函数定义告知被调用函数应返回什么类型的数据。在原型中提供与定义中相同的信息似乎有些多余,但这样做确实有道理。要让信差从办公室的办公桌上取走一些物品,则向信差和办公室中的同事交代自己的意图,将提高信差顺利完成这项工作的概率。由此可知函数原型的重要性,返回值类型,参数类型,参数个数信息。

  • 函数返回值深入理解

    函数的返回值是放在一个临时的内存单元,理解到这一点很重要。如果被调用函数内部创建一个局部变量,但是返回的是也是这个局部变量。那么首先被调用函数将这个局部变量的值复制到临时的内存单元,接着,被调用函数彻底返回,而被调用函数中的局部变量也被销毁,内存丢失,数据丢失,但是我们已经将其值拷贝到另一个内存单元中,所以调用函数去这个临时内存单元可以取到函数返回值。如果被调用函数内部创建一个局部内存块,比如数组,返回的是数组名,也即数组第一个元素的地址。那么过程与上述类似,被调用函数将这个地址放到一个临时内存单元,最终返回给调用函数,调用函数去临时内存单元中取这个地址,到这里都是没有问题。接下来,当调用函数通过这个地址去访问地址中的内容时,oops,因为该地址指向的内存单元已经被销毁,因为它是局部的内存单元,所以访问出错。如果该内存是malloc分配的,返回指向它的局部指针,这样就是没问题的࿰

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值