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

标签 c pointers constants

<分区>

我想知道两者的区别

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/

相关文章:

c - 8 个 6 位单元的 48 位字符串 : how to get middle 4 bits of each unit quickly

c++ - 从指针或引用获取迭代器

c++ - 我怎么知道谁拥有某个指针

c++ - 为什么制作 const 函数很有用?

c - 为什么 %lf 不能在 printf 中使用 double ,但 %f 可以?

c - 如何修改fork()函数?

c - K&R's The C Programming Language : Section 1. 5 字符输入输出

c - 链表节点初始化,不使用malloc()

c++ - 使用初始化列表来初始化字段和在构造函数中初始化它们有什么区别?

c - 为什么局部常量变量不进入 .rodata 部分?