C++学习笔记之引用

无论错过了多少年,无论时光奔流向何方,

唯有不相忘,可抵岁月长。


引用是为变量的起别名。

引用的本质是c++内部实现的一个指针常量。

语法: 数据类型 &别名=原名

注意:

1.引用必须初始化。创建时必须指明引用的变量名称。

2.引用一旦初始化,就不可以更改。只能作为初始化时变量的别名,不允许更改。

引用做函数参数和返回值

函数引用做参数比指针做参数更加清楚,本质上也是地址传递。

引用做函数返回值是注意:

1.不要返回局部变量的的引用。

2.函数的调用可以作为左值。返回的是引用,引用是可修改的左值。

#include <iostream>
using namespace std;

void swap1(int a1,int a2)//值传递,形参不修饰实参
{
	int temp = a1;
	a1 = a2;
	a2 = temp;
}
void swap2(int *p1,int *p2)//地址传递,形参修饰实参
{
	int temp = *p1;
	* p1 = * p2;//*p是一个左值表达式,左值和右值的概念
	* p2 = temp;
}
void swap3(int& m1, int& m2)//地址传递,形参修饰实参
{
	int temp = m1;
	m1 = m2;
	m2 = temp;
}
int& test()
{
	static int e = 100;//static修饰的局部变量的作用域并不会改变,只是生命周期会随着整个程序运行结束而结束。存放在全局区
	return e;
}

int test2(const int& c)//常量引用,确保传入的参数在函数运行中不因误操作修改
{
	cout << c << endl;
	return 0;
}

int main()
{
	int a = 10;
	int b = 20;
	int d = 80;
	swap1(a, b);
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
	swap2(&a, &b);
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
	swap3(a,b);
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
	int &ref2 = test();//通过引用操作返回的内存,如果是局部变量,函数结束时会被销毁,因而局部变量的引用不能做函数返回值
	cout << "ref2=" << ref2 << endl;
	cout << "ref2=" << ref2 << endl;

	test() = 110;//引用做函数返回值,可以做左值。本质上是静态变量e=110
	cout << "ref2="<<ref2 << endl;
	cout << "ref2="<<ref2 << endl;

	test2(d);
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值