一、const + 指针:为什么是 C 语言的 “安全神器”?
在 C 语言的内存操作中,“误修改” 是最常见的踩坑根源 —— 比如不小心改写常量字符串、意外篡改函数传入的只读数据。而const与指针的组合,就像给内存加了一把 “智能安全锁”:既能保护关键数据不被意外修改,又能明确代码意图,让编译器帮你排查错误。
很多初学者觉得const指针难,核心是没搞懂 “锁的对象是谁”—— 是指针指向的数据,还是指针本身?记住一个核心原则:const 修饰谁,谁就不能被修改。下面我们用 “钥匙与房间” 的比喻,拆解三种最常见的 const 指针组合。
二、三种 const 指针:一次分清 “锁数据” 还是 “锁指针”
1. 常量指针:const char* p(锁房间里的物品)
核心逻辑:指针p可以指向不同的 “房间”(内存地址),但不能修改 “房间里的物品”(指向的数据)。
const char* msg = "Hello";
msg = "World"; // 合法!指针指向新的字符串(新房间)
// msg[0] = 'h'; // 报错!不能修改指向的数据(房间里的物品)
这就像你手里的钥匙可以打开不同房间,但每个房间都贴了 “禁止涂改” 的标签。这种用法最常用在函数参数中,比如:
// 明确告诉调用者:函数不会修改str指向的字符串
void printStr(const char* str) {
printf("%s", str);
}
编译器会帮你把关 —— 如果函数内部尝试修改str指向的数据,直接编译报错,从源头避免误操作。
2. 指针常量:char* const p(锁钥匙的指向)
核心逻辑:指针p一旦指向某个 “房间”(内存地址),就不能再指向其他房间,但可以修改 “房间里的物品”(指向的数据)。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...