一篇搞懂C++中const和指针的暧昧关系,以及函数传参的“潜规则“(附详细代码)


大家好呀,我是灰灰,今天咱们来聊聊C++里让无数萌新抓狂的const和指针的缠绵纠葛,还有函数传参时那些&const的"小心机"。准备好瓜子饮料,咱们开车啦!


一、指针与const的"花式捆绑"(附经典姿势)

1. 只读情人模式(指向常量的指针)

const int* ptr; // 或 int const* ptr;

特点:你可以换女朋友(修改指针指向),但不能动手动脚(修改指向的值)
适用场景:查看数据但不想修改时

int a = 10, b = 20;
const int* ptr = &a;

// *ptr = 30;  // 达咩!禁止修改值
ptr = &b;      // 可以随时换对象(指向新地址)

这种模式就像博物馆的讲解员——你可以带着游客(指针)看不同的展品(内存地址),但绝对不能触碰展品(修改值)。适合处理配置数据、只读缓存等场景。如果强行修改值,编译器会直接报错:“你小子想干嘛?这展品碰不得!”


2. 霸道总裁模式(常量指针)

int* const ptr;

特点:死心塌地跟定你(不能改指向),但允许你为所欲为(修改值)
适用场景:需要固定操作某个内存区域时

int a = 10;
int* const ptr = &a;

*ptr = 20;     // 随便改值
// ptr = &b;   // 禁止劈腿!(不能改指向)

这个模式就像你的银行账户密码——一旦设置就不能更改(指针地址固定),但你可以随时修改账户余额(指针指向的值)。常用于硬件寄存器操作,或者需要确保指针始终指向特定对象时。


3. 柏拉图式恋爱(双const锁死)

const int* const ptr;

特点:既不能换对象,也不能动手动脚
适用场景:只可远观不可亵玩的配置数据

const int MAX = 100;
const int* const ptr = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值