在 C++ 中,const
和指针的结合可以产生多种语义,主要涉及指针的指向关系和指向数据的可修改性。以下是常见的几种情况及其区别:
1. 指向常量的指针(Pointer to const)
语法:const T* ptr
或 T const* ptr
含义:指针指向的数据是常量,不能通过指针修改数据,但指针本身可以指向其他地址。
const int a = 10;
const int* ptr = &a; // 正确
// *ptr = 20; // 错误!不能通过 ptr 修改 a 的值int b = 30;
ptr = &b; // 正确:指针可以指向新地址
// *ptr = 40; // 错误!即使 b 本身不是常量,也不能通过 ptr 修改