C++ 引用和指针

本文深入解析C++中的引用概念,阐述其与指针的区别及底层实现原理,强调引用的初始化规则,并通过实例代码展示引用的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用

  C++中的引用相当于给变量起了一个别名,而变量的实质就是一个内存单元,因此引用就是给一个变量起了一个别名。
  & 和类型结合时,表示引用(比如 int& c=a;表示引用a对应的内存单元);&和变量结合时(比如 int *p=&a;表示取a的地址),表示取这个变量的地址。

#include<iostream>
using namespace std;
int main()
{
	int a=10;
	int b=20;
	int& c=a;
	int* p=&b;
	cout<<"c:"<<c<<endl;
	cout<<"*p:"<<*p<<endl;

	return 0;
}

我们可以看到上述代码的部分汇编代码如下:
在这里插入图片描述
  从汇编代码中我们可以看出引用在底层的做法是先把a的地址放在eax寄存器中,再把eax寄存器中的数据放在c所对应的内存单元下,也就是把a的地址放到c对应的内存单元里。在底层指针的操作同样是先把b的地址放到eax寄存器中,再把eax寄存器中的值放入p所指向的内存单元中,相当于p保存了b的地址。所以说引用和指针在底层的处理方式是一样的,引用相当于自带了解引用。因此,打印结果如下:
在这里插入图片描述

引用的注意事项

1.引用必须初始化;
2.不能引用不可以取地址的数据,比如如下代码是错误的;

int& a=10; //错误!

3.在语法层面上没有任何语法能够改变引用;
4.引用变量只能操作其所引用的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值