1. const修饰整型变量
我们知道,const是一个关键词,在编译的时候起效果。它所修饰的常变量是C语言常量中的一种。
首先通过例子来了解const的用法。
int main()
{
const int num = 10;//int与const的位置可换
num = 20;
printf("%d\n", num);
return 0;
}
这个时候,程序马上会报错,会提示:num必须是可修改的左值。因为在这段代码里,const修饰的是num,那就意味着num的值不能被修改。
那const修饰的常变量,都不能被修改吗?
我们来看这段代码:
int main()
{
const int a = 10;
int * p = &a;
*p = 100;
printf("%d", a);
return 0;
}
我经过运行,得出这个运行结果为100,那也就是说,a虽然是被const修饰,但a的值却被改变了,很明显我们可以看出是通过指针p改变的。因此,我们可以得出一个结论:const修饰的常变量,不能被直接改变,但可以被间接改变。
2. const修饰指针变量
const 修饰指针变量有以下三种情况。
- const 修饰指针指向的内容,则内容为不可变量。
const int *p = 8;
- const 修饰指针,则指针为不可变量。
int a = 8;
int* const p = &a;
*p = 9; // 正确
int b = 7;
p = &b; // 错误
- const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量。(实际上是上面两种情况的合并)
int a = 8;
const int * const p = &a;