在C/C++编程中,指针常量和常量指针是两个容易混淆的概念。我们可以通过简单的比喻来理解它们。
1. 指针常量(Pointer to Constant)
定义:指针指向的内容是常量,不能通过指针修改内容,但指针本身可以指向其他地址。
通俗理解:
想象你有一个遥控器(指针),它可以控制不同的电视(内存地址),但电视里的节目(内容)是固定的,你不能换台。不过,你可以用遥控器切换到其他电视(改变指针的指向)。
代码示例:
总结:
- 指针可以指向不同的地址。不能通过指针修改指向的内容。
2. 常量指针(Constant Pointer)
定义:指针本身是常量,不能改变指针的指向,但可以通过指针修改指向的内容。
通俗理解:
想象你有一个遥控器(指针),它只能控制一台固定的电视(内存地址),但你可以用遥控器换台(修改内容)。不过,你不能用这个遥控器去控制其他电视(不能改变指针的指向)。
代码示例:
总结:
- 指针的指向不能改变。可以通过指针修改指向的内容。
3. 指针常量和常量指针的结合
定义:指针本身是常量,且指向的内容也是常量。
通俗理解:
你的遥控器(指针)只能控制一台固定的电视(内存地址),而且电视里的节目(内容)也是固定的,既不能换台,也不能切换电视。
代码示例:
总结:
- 指针的指向不能改变。不能通过指针修改指向的内容。
总结对比
类型 | 指针指向 | 指向的内容 | 代码示例 |
指针常量 | 可以改变 | 不能修改 | const int *p; |
常量指针 | 不能改变 | 可以修改 | int *const p; |
指针常量+常量指针 | 不能改变 | 不能修改 | const int *const p; |
记忆口诀
- 指针常量:内容不变,指针可变。
- 常量指针:指针不变,内容可变。
- 两者结合:指针和内容都不变。