ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

C语言 const的使用

C语言 const的使用 const放在*左边还是右边决定了谁被限定为只读。这是C/C指针中最核心的概念之一。⚡️ 核心区别速查写法含义可读性口诀const int *p指向的值不可改指针本身可以改const 在*左→ 锁数据int * const p指针本身不可改指向的值可以改const 在*右→ 锁指针const int * const p值和指针都不可改两边都有 → 全锁黄金法则从右向左读遇到const看它修饰的是谁。const紧邻*左侧修饰数据紧邻*右侧修饰指针变量本身。 详细对比1.const int *p常量指针 / Pointer to constconstint*pa;*p10;// ❌ 编译错误不能通过p修改指向的值pb;// ✅ 合法p可以指向别的地址典型用途函数参数中防止意外修改传入的数据voidprint(constchar*str);// 承诺不会修改str指向的字符串2.int * const p指针常量 / Const pointerint*constpa;*p10;// ✅ 合法可以通过p修改值pb;// ❌ 编译错误p不能再指向别处典型用途硬件寄存器映射、固定缓冲区指针int*constUART_REG(int*)0x40001000;// 永远指向这个地址3.const int * const p双重锁定constint*constpa;*p10;// ❌ 不能改值pb;// ❌ 不能改指向⚠️ 常见误区澄清误区正解“const int *p和int const *p不同”❌完全相同const在类型名前后等价“const放在最左边就一定是修饰数据”✅ 对const int *p成立但要记住本质是const与*的相对位置“int const * const p语法错误”❌ 合法等价于const int * const p 终极记忆技巧“左数右针”const int * p; ^^^^^^^^ ← const在*左边 → 锁定数据 int * const p; ^^^^^ ← const在*右边 → 锁定针指或者用从右向左阅读法解析任何复杂声明const int * const p ↑ ↑ 指向const int p本身是const → p是一个const指针指向const int
返回列表