当前位置: 首页 > news >正文

C++中`const int*` 与 `int* const` 的区别及记忆技巧

C++中const int*int* const 的区别及记忆技巧

在C++中,指针与const组合使用时,初学者往往容易混淆const int* dint* const e的含义与用法。本文通过清晰的规则和记忆技巧,帮助快速掌握它们的区别。


一、核心规则:const的位置决定修饰对象

  • const*左侧:修饰的是指针指向的内容,内容不可修改,但指针可以指向其他地址。

示例:

const int* d;
  • const*右侧:修饰的是指针本身,指针不可修改,但内容可修改。

示例:

int* const e;

二、简单的记忆技巧

技巧一:“左定内容,右定指针”
  • const在左侧锁定指向的内容不能改变。
  • const在右侧锁定指针本身不能改变。
技巧二:“从右往左读”
  • const int* d → “d是一个指针,指向常量的int”(内容不可变)
  • int* const e → “e是一个常量指针,指向int”(指针不可变)

三、示例讲解

(1)const int* d(指向常量的指针)
int a = 10;
int b = 20;

const int* d = &a;

*d = 30;    // 错误:内容不可修改
d = &b;     // 正确:指针可以重新指向

用途:一般用于保护数据不被修改,例如函数参数。

(2)int* const e(常量指针)
int a = 10;
int b = 20;

int* const e = &a;

*e = 15;   // 合法,内容可修改
// e = &b;  // 非法:e本身不可重新指向

用途:适合固定一个指针位置,但可以修改指向的数据。

(3)综合情况:const int* const f

表示指针和内容均不可修改。

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

*f = 20; // 非法:内容不可修改
f = &b;  // 非法:指针也不可修改

四、综合对比表格

类型能否修改指针指向能否修改指向的内容典型使用场景
const int* d可以不可以防止修改数据
int* const e不可以可以固定指针指向
const int* const f不可以不可以固定数据和指针

四、练习巩固

判断下列代码是否合法:

const int a = 100;
int b = 200;

const int* p1 = &a;  // 合法
*p1 = 30;            // 非法,内容不可修改
p1 = &b;             // 合法,指针可修改

int* const p2 = &b;  // 合法
*p2 = 40;            // 合法,内容可修改
p2 = &a;             // 非法,指针不可修改

四、常见场景

  • 使用const int*保护被传入函数的数据不被函数修改。
  • 使用int* const确保指针始终指向特定的内存区域。

四、总结对照表

类型指针能否修改?指向内容能否修改?
const int* d
int* const e
const int* const f

记住这张表格,随时回顾,快速掌握知识。


五、最终小结

通过牢记以下口诀:

左定内容,右定指针

即可清晰区分const int*int* const的用法。

相关文章:

  • Swift系列01-Swift语言基本原理与设计哲学
  • 基于 Docker 的跨平台镜像构建与增量更新实战指南
  • leetcode349 两个数组的交集
  • 算法精讲——树(一):DFS 的奇妙探险之旅
  • Linux 运维安全加固策略:实战指南
  • Docker Desktop 4.38 安装与配置全流程指南(Windows平台)
  • π0源码解析——一个模型控制7种机械臂:对开源VLA sota之π0源码的全面分析,含我司的部分落地实践
  • LabVIEW中实现FFT并提取幅值与相位
  • 立即释放 Mac 空间!Duplicate File Finder 8 重复文件高速清理工具
  • Docker Desktop常见问题记录
  • CentOS7安装MySQL5.7到指定数据目录
  • 低代码开发平台(Low-Code)简要介绍
  • 客户端的ip和端口的发送,存储位置和服务端的ip和端口的绑定
  • MySQL知识点总结(二十)
  • 【Python项目】基于深度学习的车辆特征分析系统
  • pytest结合allure
  • 中级系统运维工程师
  • 【江科大STM32】TIM输入捕获模式PWMI模式测频率
  • css梯形tab
  • Java学习笔记-文件命名
  • 自适应网站建设电话/疫情最新消息今天公布
  • 杭州拱墅网站建设/百度账号批发网
  • 中国做外贸网站有哪些问题/如何在网上推广自己
  • 网站开发 手机 验证码/360推广平台登录入口
  • 购物网站html代码/如何快速推广app
  • 评论回复网站怎么做的/网站营销与推广