定义变量
int a = 1;
int b = 2;
常量指针:
顾名思义,指向常量的指针(a pointer to const int,底层const),不能通过该指针修改变量的值(不通过该指针仍然可以修改)
const int * p1 = &a; // *p1为const,即指针指向的值为const
(也可以写成 int const * p1 = &a;)
*p1 += 1; // 错误,试图通过p1修改a的值
p1 = &b; // 正确,可以修改p1的指向
a += 1; // 正确,没有通过p1修改a的值
指针常量:
翻译问题,实际上应该翻译为 “常指针”(a const pointer to int,顶层const),可以通过该指针修改变量的值,但是不能指向其他变量
int * const p2 = &a; // p2为const,即指针本身为const
*p2 += 1; // 正确,可以通过p2修改a的值
p2 = &b; // 错误,试图修改p2的指向