10.C++之引用

学习目标:

1.引用的定义
2.引用作函数参数
3.引用做函数的返回值
4.引用的本质


学习内容:

1. 引用的定义

引用的作用就是给变量起别名,具体语法为:
数据类型 &别名 = 原名;
注意:(1)引用必须初始化,比如

int a = 18;
int &b = a;//只能传入a的名称,不能传入a的值18

注意:(2)引用在初始化之后不能更改,比如

int a = 18;
int b = 28;
int &c = a;
int &c = b;//同一个别名不能多次使用,否则报错!

无论是别名还是原名,二者都属于同一内存,只要操作其一就会改变另一个的值

2. 引用作函数形参

作用:引用作函数的形参,可以修饰实参。
优点:可以简化指针
引用传递和地址传递都可以通过形参来修饰实参!!!

#include<iostream>
using namespace std;
void swap1(int* a, int* b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
	cout << "a = " << *a << "\t";
	cout << "b = " << *b << "\t" << endl;;
}
void swap2(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
	cout << "a = " << a << "\t";
	cout << "b = " << b << "\t" << endl;
}
int main()
{
	int a = 18;
	int b = 20;
	cout << "a = " << a << "\t";
	cout << "b = " << b << "\t" << endl;
	swap1(&a, &b);//调用指针
	swap2(a, b);//引用
	system("pause");
	return 0;
}

在这里插入图片描述

3. 引用做函数的返回值

3.1 不能返回局部变量的引用;
#include<iostream>
using namespace std;
int& test()
{
	int a = 18;
	return a;
}
int main()
{
	int &ref = test();
	cout << "a = " << ref << endl;
	cout << "a = " << ref << endl;
	system("pause");
	return 0;
}

在这里插入图片描述
总结:不能返回局部变量的地址和引用。这是因为局部变量在栈区,函数执行完后会自动释放!!!!!!!!当返回静态变量时,可以返回其引用。这是因为静态变量在全局区,其上的数据在程序结束后由系统释放!!!!!
局部变量在栈区:函数执行完毕!!
静态变量在全局区:整个程序结束后系统释放!!!

当返回静态变量时,可以返回其引用;

#include<iostream>
using namespace std;
int& example()
{
	static int a = 18;
	return a;
}
int main()
{
	int &ref = example();
	cout << "a = " << ref << endl;
	cout << "a = " << ref << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

3.2 函数的调用可以作为左值
#include<iostream>
using namespace std;
int& example()
{
	static int a = 18;
	return a;
}
int main()
{
	int &ref = example();
	cout << "a = " << ref << endl;
	cout << "a = " << ref << endl;
	example() = 100;
	cout << "a = " << ref << endl;
	cout << "a = " << ref << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

4. 引用的本质(选学)

引用的本质是:一个指针常量。主要是用来修饰实参,防止误操作。在函数形参列表中,可以加上const来现指实参改变。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值