C++的引用和指针的区别(&和*)

本文对比了C++中指针和引用的特点与用法。指针可以指向未初始化的内存空间,而引用作为对象的别名,无法指向未初始化的对象。文章通过实例展示了指针在使用前需要检查有效性,而引用则不需要。

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

这里,做个总结。
资料来源:https://www.zhihu.com/question/37608201
More Effective C++
先来说一下指针的特点:
1.指针的本意是可以指向一块地址空间,这就意味着指针可以指向未初始化的内存空间。
2.这里我们来了解一下const在指针上的用法,我们这里要理解两个const,指向常量的指针以及常量指针,指向常量的指针说明我们不能通过这个指针去修改这个常量。之后,我们再讨论一下常量指针,常量指针的意思就是我们只能指向一块特定的内存,但是不能改变。
3.在没有指定该指针为常量指针的时候,我们可以随意改变该指针指向的内存。
知道了指针的这些特点,我们就可以很快的理解引用有哪些不同。
引用的意思更像是一个对象的别名,是指代这个对象的一个名字。
1.既然是一个别名,那自然是无法给一个未初始化的对象起别名的啦,这就带来一个好处,在我们在使用引用的时候。不用判断这个引用是否初始化(指针必须判断),省下了一个功夫。
看下知乎上的一个例子:
void fun1(int *point)
{
// 为了代码的稳健和安全,我们需要判断指针是否有效,通常做法是判断指针是否为
// 空,其他的判断就需要根据函数的具体功能来判断了
if(!point)
{
return;
}
// 函数实现
}

void fun2(int &refence)
{
// 在这里,我们就不用担心refence是否为空
}

作者:牛开放
链接:https://www.zhihu.com/question/37608201/answer/90293843
来源:知乎
2.引用类似于一个常量指针,当指定了一个对象的引用,就不能把这个引用改变成其他对象的引用了。具体还是看下知乎上的例子:
int xiaoming = 1;
int &refence_mingming = xiaoming;
int xiaoan = 2;
refence_mingming = xiaoan; // error,引用不能换了

这里提一句哈,引用的内部也是借助指针来实现的,但是应该在外面还包裹了其他信息。所以,引用的占用内存应该是会比指针大的,但是肯定是比把整个对象当做参数的代价要低。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值