回顾C++,对万金油“引用“的理解,非常详细

为什么要引入 “引用”?

在C程序中,我们会声明一个指针变量来指向某个变量的存储地址,p=&a,&是求变量地址运算符,用于求出a对应存储空间的首地址,再存入指针变量p中

 int *p;
 int a;
 p=&a;
 此时  *p=30  与  a=30 作用都是 给a赋值30
 
 *p 就是 *&a

但是C程序中,指针用着太麻烦了,因此C++新增个引用,更加方便

所谓引用,一句话:给变量起个别名

int i;
int &j = i;   
//声明 j是i的引用,i和j指向同一块存储空间

语法:
	数据类型 &引用变量名 = 已定义的被引用的变量名

说说引用

  1. 引用必须在声明时就要进行初始化
int i;
int &j;
j = i;		这种是错误的,系统会理解成赋值,而不是引用

因此
	int &j=i;			声明时就要进行引用
  1. 一个变量可以有多个引用

    int i;
    int &j1=i;
    int &j2=j1;
    或
    int &j2=i;
    
  2. 不存在void类型的引用、不能定义数组的引用,不能定义引用的引用,不能定义指向引用的指针变量。

    因为引用不是数据类型

  3. 特别点:只需要在声明时使用&符,此后就不再出现,因此&符虽然是引用运算符、地址操作符,但是在使用上是不同的

引用的优点

引用可以降低运行时间和代码量

因为系统不给引用类型的变量分配存储空间,基于此,我们在声明函数时,将形参定义为引用类型,形参引用实参,这样就保证了这俩的值是相同的。

不用将实参变量的值赋值给引用类型的形参变量。这样节约了存储空间

#include<iostream>
using namespace std;
int swap(int& a, int& b) {
	if (a > b)
		return b = a;
	return b;
}
int main() {
	int i=100,m=20;
	swap(i, m);
	cout << m;
	return 0;
}

在这个例子里,我们没有写 int &a=i int &b=m; 而且系统也不会给a和b申请存储空间。所以在函数的形参上通常都定义为引用 ,养成习惯,以后参与大型项目,这样会提高程序的效率、性能。

让你看起来更像大神

如果你将函数的返回值定义为引用,这种方式,可以将函数调用放在赋值运算符的左侧,来接受右侧表达式的值,看起来更加牛。

#include<iostream>
using namespace std;
int &swap(int& a,int& b) {	##看此处
	if (a > b)
		return b = a;
	return b;
}
int main() {
	int i,m;
	swap(i, m)=100,20;		##看此处
	cout << m;
	return 0;
}

函数返回一个引用时,会返回一个指针,会进行解引用操作,实际上可以修改静态变量b的值,因此函数就可以放在左边了

swap()=100 ----> b = 5 -----> *b = 5

除了将函数返回值定义为引用之外,函数的返回值是不能写在赋值运算符左边的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值