引用与指针的区别

1、语法上

指针:指针是一个变量,存储了另一个变量的内存地址。指针的声明需要在类型前加上星号 *。
引用:引用是另一个变量的别名,它在声明时必须初始化,并且一旦初始化,就不能更改引用的对象。引用的声明需要在类型前加上 &。 

2、定义上 

指针:int *a;
引用:int& a_1 = a;

3、改变指向

指针:可以任意改变指向方向
引用:一旦初始化,就不能更改引用的对象

4、初始化

指针:可以初始化为NULL,也可以不初始化
引用:声明时必须初始化

5、使用场景

指针:适用于需要动态内存分配、多级间接访问、复杂的内存管理等情况。 
引用:适用于函数参数传递、返回值、作为别名使用等场景,尤其是在不需要改变引用对象的情况下。

6、函数参数传递

指针:可以通过指针实现按地址传递,允许函数修改实参的值,也可以传递 nullptr 。

引用:通过引用传递参数可以允许函数修改实参的值,但不允许传递空引用。

7、安全性

指针:指针操作更加复杂,容易出错,如空指针解引用、野指针等。 
引用:引用更安全,因为它们总是指向一个有效的对象,并且不能被重新赋值。

8、自增运算意义不同

p++之后指向a后面的内存,s++相当于a++。

9、sizeof 的运算结果不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值