02.const常量限制
# define PI 3.14
- 但是宏定义实际上是字符的替换,宏定义的缺点是没有指明所定义常量类型
- c++中使用const关键字来定义常量
const int PI = 3.14;
- const关键字用于修饰变量,将变量变为常量
- 常量一旦定义就没有办法进行修改,因此在使用const进行修饰变量时一定要给变量赋值
- const关键字修饰的变量不能修改是指在程序的编译过程中不能修改,但是在程序运行过程中仍然可以通过修改地址的方式进行修改
int main(int argc, char** argv)
{
const int c = 3;
int* p = (int*)&c;
printf("常量的值为:%d",c);
}
- 在上面这个例子中,如果修改常量c的值编译过程中会报错,同样即使在程序运行过程中通过修改常量c的地址改变常量c的值也会发现printf打印出来后c的值没有发生变化,这是因为c++编译法人优化机制,对于已经清楚的常量在编译时会直接进行替换
- 如果在程序编译时,程序不知道常量的值,此时不会发生优化进行直接替换,因此可以通过修改常量的地址对常量的值进行修改
int main(int argc, char** argv)
{
const int c = argc;
int* p = (int*)&c;
printf("常量c:%d",c);
}