Avatar ·

const int*, int * const 和 const int * const 在 C++ 中的区别

大家好!我刚开始学习 C++,但在指针上下文中使用关键字 `const` 时完全搞不清楚。我看到三个不同的声明,彻底糊涂了: 1. `const int* ptr;` 2. `int* const ptr;` 3. `const int* const ptr;` 为什么它们含义不同?哪个允许修改指针指向的值,哪个允许修改指针本身?我写了一个小例子: ```cpp int a = 10; int b = 20; const int* p1 = &a; // *p1 = 30; // 如果取消注释,会报错 p1 = &b; // 可以工作 int* const p2 = &a; *p2 = 30; // 可以工作 // p2 = &b; // 如果取消注释,会报错 const int* const p3 = &a; // *p3 = 30; // 报错 // p3 = &b; // 报错 ``` 我的理解是否正确:`const` 在星号左边保护数据,在右边保护指针本身?或者有更简单的记忆规则?请解释一下这是如何工作的,以及在什么情况下使用哪种声明。提前感谢! <<>>

如何阅读关