我想知道两者的区别
const int* ptr;
和
int * const ptr;
以及它是如何工作的。
我很难理解或记住这一点。请帮忙。
声明ptr一个指向const int类型的指针。您可以修改自身,但不得修改ptr所指向的对象。ptr
ptr
const int
const int a = 10; const int* ptr = &a; *ptr = 5; // wrong ptr++; // right
尽管
声明ptr一个const指向int类型的指针。不允许修改ptr,但指向的对象ptr可以修改。
const
int
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