const 的使用方法
常变量: const 类型说明符 变量名
常引用: const 类型说明符 &引用名
常变量使用
const 修饰变量时,是以变量为主的;一旦赋值后,不能更改
const int a = 10;
a = 20; // 报错
但是对于c和c++还是有区别的
C语言
const int a = 10;
int* p = (int*)(&a);
printf(" *p = %d, a = %d", *p, a);
printf("\n");
*p = 20;
printf(" *p = %d, a = %d", *p, a);
printf("\n");
上述C语言代码执行后,结果为
*p = 10, a = 10
*p = 20, a = 20
C语言 int* p = (int*)(&a);
将a的地址赋值给p并且将a的地址强转为 int* 类型。然后在改变其值。
但是在C++ 语言执行上述代码结果
*p = 10, a = 10
*p = 20, a = 10
const 和 指针
const int*
和 int const*
的效果是一样的
int a = 10, b = 20;
const int* p1 = &a;
printf("*p1 = %d \n", *p1);
// *p1 = 2; // 这里会报错
p1 = &b;
printf("*p1 = %d \n", *p1);
运行结果
*p1 = 10
*p1 = 20
const 修饰的是int*
指针,指针里的值是不可以改变,但是指针可以指向另外一个变量。
但是 int* const
与 const int*
是有区别的
int a = 10, b = 20;
int* const p1 = &a;
printf("*p1 = %d \n", *p1);
*p1 = 30;
// p1 = &b; // 这里会报错
printf("*p1 = %d \n", *p1);
运行结果
*p1 = 10
*p1 = 30
const 指向的 变量, 指针里的值是可以改变的,但是指针不可以指向另外一个变量,总结就是 const只针对它左边的东西,如果const 本身在最左边,就修饰它右边。