关于 C++ const关键字的使用
const 的作用
用于修饰变量、指针、引用、成员函数。
被它修饰的值不能改变,是只读变量。必须在定义的时候就给它赋初值。
常量指针
是指定义了⼀个指针,这个指针指向⼀个只读的对象,不能通过常量指针来改变这个对象的值。
常量指针强调的是指针对其所指对象的不可改变性。
即:指向的内容不可变,但指针可以指向其他地址
形式:
- const 数据类型 * 指针变量 = 变量名
- 数据类型 const * 指针变量 = 变量名
代码示例:
1 | int a = 10, b = 20; |
指针常量
指针常量是指定义了⼀个指针,这个指针的值只能在定义时初始化,其他地⽅不能改变。
指针常量强调的是指针本身的不可改变性。
即:指针的指向不可变,但可以修改指向的内容
形式:
- 数据类型 * const 指针变量 = 变量名
代码示例:
1 | int a = 10, b = 20; |
指向常量的指针常量
指针的指向不能改变,也不能通过指针修改所指向的值。
指向常量的指针常量强调的是指针本身 与其所指对象的不可改变性。
形式:
- const 数据类型 * const 指针变量 = 变量名
代码示例:
1 |
|
常见应用场景
常量指针的典型用途
1 | void printString(const char* str) { |
指针常量的典型用途
1 | int configValue = 100; |
指针常量的典型用途
常用于定义不会改变的系统常量
1 | const int MAX_SIZE = 100; |
与引用的关系
引用在行为上类似于一个自动解引用的指针常量:
1 | int a = 10; |
总结对比表
类型 | 声明格式 | 指针可变 | 指向内容可变 | 类似引用类型 |
---|---|---|---|---|
普通指针 | int* ptr | 是 | 是 | - |
常量指针 | const int* ptr | 是 | 否 | - |
指针常量 | int* const ptr | 否 | 是 | int& |
指向常量的指针常量 | const int* const ptr | 否 | 否 | const int& |