一文搞懂常量指针与指针常量的本质区别
常量指针与指针常量的区别常量指针和指针常量是C/C中容易混淆的概念主要区别在于指针本身和指向的内容是否可以修改。常量指针Pointer to Constant常量指针指向的内容是常量不能通过指针修改其值但指针本身可以指向其他地址。语法形式const int* ptr; int const* ptr; // 两种写法等价示例int a 10; const int* ptr a; // *ptr 20; // 错误不能通过ptr修改a的值 a 20; // 允许直接修改a的值 int b 30; ptr b; // 允许ptr可以指向其他地址指针常量Constant Pointer指针常量本身是常量不能指向其他地址但可以通过指针修改其指向的内容。语法形式int* const ptr;示例int a 10; int* const ptr a; *ptr 20; // 允许可以通过ptr修改a的值 int b 30; // ptr b; // 错误ptr不能指向其他地址指向常量的指针常量指针本身和指向的内容都不能修改。语法形式const int* const ptr;示例int a 10; const int* const ptr a; // *ptr 20; // 错误不能通过ptr修改a的值 // ptr b; // 错误ptr不能指向其他地址 a 20; // 允许直接修改a的值记忆方法从右向左读声明const int* ptrptr是一个指针指向int常量。int* const ptrptr是一个常量指向int。const int* const ptrptr是一个常量指向int常量。应用场景常量指针用于保护数据不被意外修改例如函数参数传递时避免修改原始数据。指针常量用于固定指针的指向例如硬件寄存器映射。指向常量的指针常量同时保护指针和数据的场景。