C++学习笔记之引用理解

一、基础

引用就是内存取别名

int main() {
	int a = 10;
	int& b = a;//引用的声明
	int& c;//编译失败,引用必须依赖某个变量
	system("pause");
	return 0;
}

二、用处

//指传递
void my_swap(int a, int b) {
	int temp;
	temp = a;
	a = b;
	b = temp;
}

//引用传递
void my_swap2(int& a, int& b) {
	int temp;
	temp = a;
	a = b;
	b = temp;
}

//指针传递
void my_swap3(int* a, int* b) {
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}

int main() {
	int a = 10;
	int b = 20;
	my_swap(a , b);
	cout << "a : " << a << ", b : " << b << endl;//打印结果:a : 10, b : 20,没有实现交换

	int c = 10;
	int d = 20;
	my_swap2(c, d);
	cout << "c : " << c << ", d : " << d << endl;//打印结果:c : 20, d : 10,实现交换

	int e = 10;
	int f = 20;
	my_swap3(&e, &f);
	cout << "e : " << e << ", f : " << f << endl;//打印结果:e : 20, f : 10,实现交换
	system("pause");
	return 0;
}

三、函数当左值

函数返回的是引用,则返回的是变量本身。

//返回值内容
int fun01() {
	static int a = 10;
	a++;
	return a;
}

//返回值本身
int& fun02() {
	static int a = 10;
	a++;
	return a;
}

int main() {
	//fun01() = 20;//编译不通过,fun01返回的是a的值10。左值是10,不可修改
	fun02() = 30;//相当于a = 30;
	
	system("pause");
	return 0;
}

四、常引用

常引用声明:const int& y,让引用只读属性。

int main() {
	//普通引用
	int a = 40;
	int& b = a;
	b = 30;
	cout << "a : " << a << endl;

	//常引用
	int x = 10;
	const int& y = x;//y为常引用,让引用只读属性,不能通过y来修改x的值
	x = 20;
	y = 60;//编译不通过,y是常引用,不可通过引用y修改x的值
	system("pause");
	return 0;
}

可以通过字面量初始化常引用

int& b = 10;//编译失败,字面量无法给引用赋值,因为10没有内存地址,而引用就是给内存取别名
const int& b = 10;//编译成功,C++编译器会给b分配一个内存空间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值