参考资料:
C++中&的功能 及 用法 - konglingbin - 博客园 (cnblogs.com)
对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在 c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。
“&”作为逻辑运算符以及作为位运算符的功能。
常被用作下面的功能:
1、取址
int *p = &a;
这行代码的意思是将变量a
的地址赋值给指针变量p
在这个语句执行后,p
指向了a
的地址,也就是说p
里面存储的是变量a
的地址。我们可以通过p
指针来访问a
的值:“*p”
2,引用
int &b = a;
此时b就是a的引用,或者称之为别名。如果修改b的值,那么a的值也会相应地发生改变。如b=1,那么a也就会跟着等于1。这种方式在函数传参的时候很常见,如果想函数执行完改变原参数的值,就应该在传参的时候,传入原来的实参的引用。
3,常引用
- const int &b = a;
- b = 1;//错误
- a = 1;//正确
这种做法还有一些其它的应用,以后阐述。
4,作为函数的返回
以引用返回函数值,定义函数时需要在函数名前加&,用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。
int max(int a, int b) { return (a > b) ? a : b; }
在上述代码中,函数max
返回了一个int
类型的值,如果我们想要在另一个函数中使用max
函数的返回值,可以将它存储在一个变量中,例如:
int a = 10, b = 20; int max_value = max(a, b);
在上述代码中,max_value
存储了max
函数的返回值。但是,这样做会产生一个被返回值的副本,因为max
函数返回的是一个新的int
类型的值,需要将这个值复制到max_value
中。如果我们使用引用返回函数值,可以避免产生副本,例如:
int& max(int& a, int& b) { return (a > b) ? a : b; }
在上述代码中,函数max
返回了一个int
类型的引用,这个引用指向a
和b
中较大的那个数。如果我们想要在另一个函数中使用max
函数的返回值,可以将它存储在一个引用变量中,例如:
int a = 10, b = 20; int& max_value = max(a, b);
在上述代码中,max_value
是一个引用变量,它指向a
和b
中较大的那个数。这样做不会产生被返回值的副本,因为返回的是原始数据的引用,而不是复制一份数据到另外一个地方。
一、引用简介
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型标识符 &引用名=目标变量名;
【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名
说明:
(1)&在此不是求地址运算,而是起标识作用。
(2)类型标识符是指目标变量的类型。
(3)声明引用时,必须同时对其进行初始化。
(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
标签:功能,函数,int,max,C++,用法,引用,变量 From: https://www.cnblogs.com/xzit201802/p/17308104.html