今天看到c++ 大学教程的第八章 指针,里面有个常量与指针之间的关系比较容易混淆,特此记录一下。
1. 指向非 const 数据的非 const 数据
int val = 0;
int *pVal = &val;
该指针拥有最大的灵活性,既可以修改指针的值以指向其他变量,又可以通过该指针来修改他所指向的数据。
2.指向 const 数据的非 const 指针
const int val = 0;
const int *pVal = &val;
该指针可以被修改指向其他变量,但是不能通过该指针来修改它所指向的变量。
3.指向非 const 数据的 const 指针
int val = 0;
int * const pVal = &val;
该指针不能被修改以指向其他变量,但是可以通过该指针来修改它所指向的变量。
4.指向 const 数据的 const 指针
const int val = 0;
const int * const pVal = &val;
该指针既不能被修改以指向其他变量,也不能通过该指针来修改它所指向的变量。
总结:Type 前的 const 修饰指针指向的 Type 为 const 类型;Type 后的 const 修饰该指针为 const 类型。