常量指针 vs 指向常量的指针
常量指针 vs 指向常量的指针
这个问题已经有了答案:
我想知道
const int* ptr;
和
int * const ptr;
之间的区别以及它是如何工作的。
我很难理解或记住这个。
请帮助我。
admin 更改状态以发布 2023年5月23日
const int* ptr;
声明 ptr
为指向 const int
类型的指针。你可以修改 ptr
本身,但指针指向的对象不应该被修改。
const int a = 10; const int* ptr = &a; *ptr = 5; // wrong ptr++; // right
而
int * const ptr;
声明 ptr
为指向 int
类型的 const
指针。你不被允许修改 ptr
,但指针指向的对象可以被修改。
int a = 10; int *const ptr = &a; *ptr = 5; // right ptr++; // wrong
通常我更喜欢这种声明方式,因为它易于阅读和理解(从右到左读):
int const *ptr; // ptr is a pointer to constant int int *const ptr; // ptr is a constant pointer to int