首页 > 其他分享 >引用与函数

引用与函数

时间:2023-02-10 15:58:05浏览次数:37  
标签:const 变量 形参 引用 实参 函数

引用用于函数的参数

把函数的形参声明为引用,调用函数的时候,形参将成为实参的别名。
这种方法也叫按引用传递或传引用。(传值、传地址、传引用只是说法不同,其实都是传值。)
引用的本质是指针,传递的是变量的地址,在函数中,修改形参会影响实参。
1)传引用的代码更简洁。
2)传引用不必使用二级指针。
3)引用的属性和特别之处。

引用的形参和const

如果引用的数据对象类型不匹配,当引用为const时,C++将创建临时变量,让引用指向临时变量。
什么时候将创建临时变量呢?
l 引用是const。
l 数据对象的类型是正确的,但不是左值。
l 数据对象的类型不正确,但可以转换为正确的类型。
结论:如果函数的实参不是左值或与const引用形参的类型不匹配,那么C++将创建正确类型的匿名变量,将实参的值传递给匿名变量,并让形参来引用该变量。
将引用形参声明为const的理由有三个:
l 使用const可以避免无意中修改数据的编程错误。
l 使用const使函数能够处理const和非const实参,否则将只能接受非const实参。
l 使用const,函数能正确生成并使用临时变量。
左值是可以被引用的数据对象,可以通过地址访问它们,例如:变量、数组元素、结构体成员、引用和解引用的指针。
非左值包括字面常量(用双引号包含的字符串除外)和包含多项的表达式。

引用用于函数的返回值

传统的函数返回机制与值传递类似。

函数的返回值被拷贝到一个临时位置(寄存器或栈),然后调用者程序再使用这个值。

double m=sqrt(36);   // sqrt()是求平方根函数。
//sqrt(36)的返回值6被拷贝到临时的位置,然后赋值给m。
cout << sqrt(25);
//sqrt(25)的返回值5被拷贝到临时的位置,然后传递给cout。

如果返回的是一个结构体,将把整个结构体拷贝到临时的位置。
如果返回引用不会拷贝内存。
语法:
返回值的数据类型& 函数名(形参列表);
注意:
l 如果返回局部变量的引用,其本质是野指针,后果不可预知。
l 可以返回函数的引用形参、类的成员、全局变量、静态变量。
l 返回引用的函数是被引用的变量的别名,将const用于引用的返回类型。

标签:const,变量,形参,引用,实参,函数
From: https://www.cnblogs.com/tgfoven/p/17109206.html

相关文章

  • JavaScript中的函数
    函数:一个被设计为执行特定任务的代码块语法通过function关键词定义,后面跟着其函数名称,然后是一对圆括号,圆括号中可以定义一些函数的参数。没有名称的函数呢?函数名称......
  • 【c&c++】C语言:fgets和fgetc函数读取文件
    C语言:fgets和fgetc函数读取文件1、fgetc是filegetchar的缩写,意思是从指定的文件中读取一个字符。fgetc()readsthenextcharacterfromstreamandreturns......
  • c语言填空:用函数判断是否为质数
    #include<stdio.h>//键盘输入任意整数,判断其是否为质数intpdzs(intn){inta;for(a=2;a<n;a++)if(n%2==0)【1】;【2】;}main(){int......
  • 【c&c++】 C语言:access函数的使用
    一、access()函数用来判断用户是否具有访问某个文件的权限(或判断某个文件是否存在).二、需要包含#include<unistd.h>三、参数和返回值intaccess(constchar*path......
  • Promise构造函数
    介绍Promise是ES6引入的异步编程的新解决方案,语法上Promise是一个构造函数,用来封装一步操作并可以获取其成功或失败的结果。1.Promise构造函数:Promise(excutor){}2.P......
  • MySQL视图、存储过程、函数、触发器、定时任务、流程控制总结
    视图的增删改查视图相当于一张只能读的表,不可以修改。当组成视图的表发生数据变化的时候,视图会相对应的进行改变。存储过程的练习创建存储过程:create[ifnotexi......
  • 箭头函数的一些优雅写法
    最近在写setState总是会遇到函数式写法,如:setData((pre)=>{return{...pre,somedata...}})``但是又实在不喜欢写return,不明白为什么编辑器会认不出来我......
  • Go 语言函数
    函数是基本的代码块,用于执行一个任务。Go语言最少有个main()函数。你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。函数声明告诉了编译器函数的名......
  • js基础笔记学习107-构造函数
     ......
  • js基础笔记学习97-立即执行函数2
     ......