<分区>
我想知道两者的区别
const int* ptr;
和
int * const ptr;
及其运作方式。
我很难理解或记住这一点。 请帮忙。
<分区>
我想知道两者的区别
const int* ptr;
和
int * const ptr;
及其运作方式。
我很难理解或记住这一点。 请帮忙。
最佳答案
const int* ptr;
声明 ptr
一个指向 const int
类型的指针。您可以修改ptr
本身,但不能修改ptr
指向的对象。
const int a = 10;
const int* ptr = &a;
*ptr = 5; // wrong
ptr++; // right
同时
int * const ptr;
声明 ptr
一个指向 int
类型的 const
指针。您不能修改ptr
,但可以修改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
关于常量指针与指向常量的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476869/