C++ const指针和指向const的指针 C++常量指针语法记忆口诀【易错】
发布时间 - 2026-01-30 00:00:00 点击率:次const位置决定指针语义:const在左边(如const int)表示指向const的指针,不可修改所指对象;在指针名右边(如int* const)表示const指针,不可修改指针本身;两者兼具则均不可变。
const 在 * 左边还是右边决定语义
判断一个指针声明是「指向 const 的指针」还是「const 指针」,只看 const 直接修饰谁:
— const 紧挨 * 左边(如 const int*),表示「指向 const int 的指针」,即不能通过它修改所指对象;
— const 紧挨指针名右边(如 int* const),表示「const 指针」,即指针本身不可再赋值指向

常见易错声明与对应错误行为
这些写法看着像,但语义完全不同,编译器报错位置也不同:
-
const int* p1 = &x;→ 允许p1 = &y;,但禁止*p1 = 5;(报错:assignment of read-only location) -
int* const p2 = &x;→ 禁止p2 = &y;(报错:assignment of read-only variable 'p2'),但允许*p2 = 5; -
const int* const p3 = &x;→ 两者都禁止,p3和*p3都不可变
从右往左读口诀真有用
把声明当英语读,从右往左解析更可靠。例如:
— int* const p → “p is const pointer to int” → p 是 int 的 const 指针
— const int* p → “p is pointer to const int” → p 是指向 const int 的指针
— const int* const p → “p is const pointer to const int”
这个顺序和 C++ 声明语法一致(类型修饰符从右向左绑定),比死记“左定值、右定址”更少歧义。
立即学习“C++免费学习笔记(深入)”;
函数参数中 const 指针的典型用法
实际编码里,const 指针多用于表达意图和避免意外修改:
- 传入只读数据时用
const T*:如void print(const char* s),确保函数内不改s所指字符串 - 传入固定地址且不允许重绑定时用
T* const:少见,但可用于封装类内部缓存指针(如Buffer* const m_buf) - 返回局部 const 指针要小心:如
const int* get_ptr() { return &local; }是悬垂指针,const不解决生命周期问题
真正容易被忽略的是:const 修饰的是「通过该指针访问时的行为约束」,不是内存本身的只读性;底层内存仍可能被其他非 const 途径修改(比如同时存在 int* q = &x; 和 const int* p = &x;)。
# 编码
# c++
# print
# 常量
# 封装
# const
# 字符串
# char
# int
# void
# 指针
# pointer
# 对象
# location
# 的是
# 报错
# 绑定
# 时用
# 往左
# 看着
# 都不
# 英语
# 只看
# 要小心
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
在线制作视频网站免费,都有哪些好的动漫网站?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
js实现获取鼠标当前的位置
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Python结构化数据采集_字段抽取解析【教程】
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
JavaScript数据类型有哪些_如何准确判断一个变量的类型
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
浅析上传头像示例及其注意事项
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Android okhttputils现在进度显示实例代码
网站制作价目表怎么做,珍爱网婚介费用多少?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
香港服务器租用费用高吗?如何避免常见误区?
网站建设要注意的标准 促进网站用户好感度!
Laravel怎么使用artisan命令缓存配置和视图
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
php485函数参数是什么意思_php485各参数详细说明【介绍】
三星、SK海力士获美批准:可向中国出口芯片制造设备
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
如何用低价快速搭建高质量网站?
PythonWeb开发入门教程_Flask快速构建Web应用
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
网站建设整体流程解析,建站其实很容易!
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
高防服务器租用首荐平台,企业级优惠套餐快速部署
大连 网站制作,大连天途有线官网?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
JavaScript Ajax实现异步通信
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
如何在搬瓦工VPS快速搭建网站?
Python并发异常传播_错误处理解析【教程】
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
,怎么在广州志愿者网站注册?
详解Android——蓝牙技术 带你实现终端间数据传输
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
HTML 中动态设置元素 name 属性的正确语法详解
Android自定义控件实现温度旋转按钮效果
Laravel怎么实现模型属性的自动加密
Laravel如何优化应用性能?(缓存和优化命令)
如何快速搭建个人网站并优化SEO?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?

