1.const关键字 用于修饰变量,使这个变量不能被修改
const修饰的变量叫做常变量;
例如 :
int a=100;
a=200;
printf("%d",a);
此时控制台打印的结果就是200;
但如果用关键字const修饰变量,就变量就不会被修改,而且编译器会报错
例如:
int a=100;
a=200;
printf("%d",a);
此时编译器会报错;
注:被const修饰的变量还是变量,不是常量,只是值不能被修改。
而且在C99之前是不支持变长数组,也就是不能当作常量或者一个数字来使用
例如:
const int a=10;
int arr[n];
如果这样定义数组是不合法的,编译器会包报错。
但是可以用指针的方法绕过,直接修改变量a的值
const int a=100;
int *p = &a;
*p = 200;
printf("%d",a);
这样打印出的变量a的值就是200;
可以用一个形象的话开理解:高启强不好办的事情,交给老墨去办。
2.const 可以修饰指针变量,使变量不能通过指针的方式修改变量的值。
有三种修饰情况
(一),当const放在指针*的左边(int const * p或const int * p ),会限制* p 的修改,但是可以修改指针变量 p 的地址 ,也就是p = &b 合法。
int a=100,b=300;
int const * p = &a;
* p = 200; //这一行编译器会报错
p = &b; // 这一行合法可以执行,意思为改变指针变量 p 的指向。
printf("%d",a);
此时 编译器会报错。
(二)当const放在*之后,会限制指针变量p的修改,也就是p = &b这行代码不合法;
与上面的代码刚好相反。
(三)当const 在 * 的前后都加上const,那么两种修改的方式都不能用
也就是(int const * p const = &a);
2637

被折叠的 条评论
为什么被折叠?



