C语言中const代表着”不可变“,基本和常量一样不可修改,但是应用场景不一样。
一.应用在变量
const char a='A';
a='B'; //错误,变量a的值不可以修改。
此时代表变量a值不可改变,任何企图修改a变量值的语句(例如a=20;)都会报错。
二.应用在指针
1)应用在*左边
const char *p;
char const *p;
以上两条语句作用一样,都是表示指针指向的变量值不可以修改,但指针可以修改。
例如1;
const char *p='A';
char *q;
*p='B'; //错,指针指向的值不可以修改。
p=q; //对,指针值可以修改
2)应用在*右边
char *const *p;
表示指针值(指针指向的位置)不可以改变,但指针指向的值可以改变。
例如2:
char *const *p='A';
char *q;
*P='b'; // 对,指针指向的值可以修改。
p=q; //错误,指针值不可以修改。
总之,const在*左边,表示指针指向的值不可以修改。const在*右边,表示指针值(也就是指针指向的位置)不可以修改。
三.应用在函数参数
例如3:strcat(char *a,char const *b),将参数b指向的字符串,添加到参数a字符串的末尾。
此时,参数*a值可以改变,但是表示参数*b值不可改变