常量指针 vs 指向常量的指针

13 浏览
0 Comments

常量指针 vs 指向常量的指针

这个问题已经有了答案

const int *,const int * const和int const *有什么区别?

char * const和const char *之间的区别是什么?

我想知道

const int* ptr;

int * const ptr; 

之间的区别以及它是如何工作的。

我很难理解或记住这个。

请帮助我。

admin 更改状态以发布 2023年5月23日
0
0 Comments

const int * ptr;

意味着所指的数据是常量和不可变的,但指针不是。

int * const ptr;

意味着指针是常量和不可变的,但所指的数据不是。

0
0 Comments

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

0