1. 指针常量
本质是一个常量,而用指针修饰它。指针常量的值是指针,这个值因为是常量,所以不能被赋值。
形式:
int* const p;
注意:
- 它是个常量!
- 指针所保存的地址可以改变,然而指针所指向的值却不可以改变;
- 指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化;
2. 常量指针
常指针,指向一个常量的指针。
形式:
int const* p; const int* p;
例如:
const int i =123;//常量
int const* p = i; //指向常量的指针
注意:
常指针不能通过指针修改值的内容。(常量不可修改)
指针还可以指向别处,因为指针本身只是个变量,可以指向任意地址。
3. 指向常量的常指针
指向常量的指针常量就是一个常量,且它指向的对象也是一个常量。
形式:
const int* const p;
注意:
- 一个指针常量,指向的是一个指针对象;
- 它指向的指针对象且是一个常量,即它指向的对象不能变化;
4. 区别
| 是否是常量 | 指针指向的内容是否可以修改 | 是否可以通过指针修改指向的内容 | |
|---|---|---|---|
| 指针常量 | 是 | 是 | 否 |
| 常量指针 | 否 | 是 | 否 |
| 指向常量的常(量)指针 | 是 | 否 | 否 |