文章目录
首先,我们要来明确一下,什么是const,在我们通常的观念里面,我们会认为下面这个代码是错误的。
const int b = 20;
b = 30;
因为const修饰的变量不能作为左值。初始化完成后值不能被修改。
1、在.c中const 的用法
在我之前的一篇博文中,有对其大概的讲解,c语言中const的用法
1.1const修饰的量,可以不用初始化
例如以下的程序是错误的:
const int a;
a = 20;
因为const的值虽然可以不用初始化,但是以后就不能作为左值来进行修改了。
所以一般情况下还是对其进行初始化。
1.2const修饰的量不叫常量,叫常变量
他和变量的唯一区别就是不能够把她作为左值修改。比如下列程序就是错误的。
const int a = 20;
int array[a] = {};
1.3练习
下列.c程序,打印结果是多少?
int main()
{
const int a = 20;
int* p = (int*)&a;
*p = 30;
printf("%d %d %d\n", a, *p, *(&a));
return 0;
}
指针指向的是a的内存。结果是30,30,30.因为a这块内存已经被改了。a一直都是一个变量
2、在.cpp中const 的用法
2.1const修饰的量叫做常量,必须初始化
所以以下代码则是正确的:
const int a = 20;
int array[a] = {};
2.2const修饰的量叫常量
还是上述.c里面练习的代码。打印结果则为20 30 20
这是因为const的编译方式不同
- c中,const就是当做一个变量