C语言中 const 是类型限定符,用于声明只读变量,初始化后值不可被修改,可修饰变量、指针、函数参数等多种场景。
基础用法与变量修饰
- 修饰普通变量:必须在定义时初始化,之后不可修改。
- 示例:const int MAX = 100; 正确,const int x; 错误。
- 修饰数组:创建只读数组,元素值不可更改。
- 示例:const int nums = {1, 2, 3};
- 修饰结构体:结构体所有成员视为常量,初始化后不可修改。
指针与 const 的组合
const 与指针结合有三种情况,关键在于 const 相对于*的位置:
- 指向常量的指针:constint *p或 int const *p,指针可变,指向内容不可变。
- 常量指针:int *constp,指针不可变,指向内容可变,声明时必须初始化。
- 指向常量的常量指针:const int *const p,指针和内容均不可变。
函数中的应用与注意事项
- 修饰函数参数:防止函数内部修改传入参数,提升安全性。
- 示例:void print(const char *str)
- C 语言特性:const 变量本质是只读变量,会分配内存,C89 中不能用于数组长度定义。
- 与#define 区别:const 有类型检查和地址,#define 是预处理替换无类型检查。