C语言 - const 用法
定义
const 是 C 语言中的一个关键字,需要注意的是,const 关键字是把变量变为一个只读的变量(也就是不可以作为左值),绝对不是将这个变量变为常量。也就是说经过 const 修饰的变量成为只读的变量之后,那么这个变量就只能作为右值(只能赋值给别人),绝对不能成为左值(不能接收别人的赋值)。
而 C++ 则是将 const 修饰的常量变为一个真正的常量(变量的内容不可以被修改), 这一点的区别需要注意。当 const 修饰变量的时候,就将这个常量放在符号表里面,编译的过程中发现使用了变量,那么就从符号表里面的值进行替换。
经过 const 修饰的变量,在定义的时候,就要进行初始化。
const int a = 10; // 正确
const int a; // 错误
const 关键字最有用的地方是用来限定函数的形参。
func(const char *ptr)
{
do_something;
}
这样 ,func 函数将不会修改实参指针所指的数据,但是其他的函数却可以修改它。因此,也可以通过是否有 const 修饰来反映该参数是输入还是输出。
实际上,const 被命名为 readonly 更为合适。
使用
指向 const 的指针
首先是一个指针,但是这个指针是指向一个 const 类型的指针。一般如下:
const int *p; // 一般使用这个
或者
int const *p;