C++中的引用

1.引用的基本语法

引用的概念给已存在变量取了一个别名

引用的语法类型数据 &别名 = 原名

注意点:1.引用不是赋值,例如(int &b = a;这是引用。int b = a;这是赋值)

2.引用的变量和已存在变量共用同一块内存空间

#include<iostream>
using namespace std;
 
int main()
{
	//引用基本数据类型
	//数据类型 &别名 = 原名
 
	int a = 10;
	int& b = a;
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
 
	b = 1000;
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
    system("pause");
    return 0; 
}

结果如下

2.引用的注意事项

  1. 引用在 定义时必须初始化

int a = 10;
int &b;//错误,未初始化
int &b = a;//正确,使用引用时必须指定变量(初始化)
  1. 一个变量可以有多个引用

#include<iostream>
using namespace std;

int main()
{
	int a = 10;
	int& b = a;
	int& c = a;
	int& d = a;
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
	cout << "c=" << b << endl;
	cout << "d=" << b << endl;
	
	system("pause");
	return 0;
}

结果如下:

  1. 引用一旦引用一个实体,再不能引用其他实体

#include<iostream>
using namespace std;

int main()
{
	int a = 10;
	int c = 20;
	int& b = a;
	/*编译器报错*/
	int& b = c;
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
	cout << "c=" << b << endl;
	
	
	system("pause");
	return 0;
}

3.引用的应用场景

3.1引用做函数参数

#include<iostream>
using namespace std;
 
//值传递,形参不会修饰实参
void swap01(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
	cout << "swap01 a=" << a << endl;
	cout << "swap02 b=" << b << endl;
}
 
int main()
{
	int a = 10;
	int b = 20;
	swap01(a, b);
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
 
	system("pause");
	return 0;
}

结果如下:

#include<iostream>
using namespace std;
 
//地址传递,形参会修饰实参
void swap02(int *a, int *b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
	cout << "swap02 a=" << *a << endl;
	cout << "swap02 b=" << *b << endl;
}
 
int main()
{
	int a = 10;
	int b = 20;
	swap02(&a, &b);
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
 
	system("pause");
	return 0;
}

结果如下:

3.2引用做函数返回值

3.2.1返回局部变量引用
#include<iostream>
using namespace std;
 
//引用做函数的返回值
//1、不要返回局部变量的引用
int& test01()
{
	int a = 10;// 局部变量存放在四区中的 栈区
	return a;
}
 
int main()
{
	int& b = test01();
	cout << "b=" << b << endl;//a的内存已经释放
 
	system("pause");
	return 0;
}

这段代码,主函数中用b返回局部变量a,由于局部变量在栈区,主函数返回时a的内存已经释放,执行后b内存随便分配,出现错误。

再次提醒栈区中不要返回局部变量!!

3.2.2返回静态变量
#include<iostream>
using namespace std;
 
//引用做函数的返回值
//1、不要返回局部变量的引用
int& test01()
{
	static int a = 10;// 静态变量,存放在全局区,全局区的数据在程序结束后释放
	return a;
}
 
int main()
{
	int& b = test01();
	cout << "b=" << b << endl;
	test01() = 100;
	cout << "b=" << b << endl;
	cout << "b=" << b << endl;
 
	system("pause");
	return 0;
}

如果函数的返回值是引用,这个函数调用就可以作为左值。


1.第一次编写时间3月15日

//不积小流,无以成江海。不积跬步,无以至千里。//

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值