小编典典

常量指针与指向常量的指针

all

我想知道两者的区别

const int* ptr;

int * const ptr;

以及它是如何工作的。

我很难理解或记住这一点。请帮忙。


阅读 63

收藏
2022-06-07

共1个答案

小编典典

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一个const指向int类型的指针。不允许修改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
2022-06-07