const含义
const含义是不变的、恒定的,在c语言中可以理解为“只读”,不希望试图对其进行修改(赋值),但在某些情况下可以对其间接修改。
在这层意义上来说,const就不能等同于常量,常量是不能变的,变不了的。
int main(){
const int ca = 1234;//当在局部作用域时用const定义变量,以下操作可以间接修改变量的值
//ca = 1234; //直接赋值肯定不行 编译器不通过
int *p = (int *)&ca;
*p = 5678; //直接拿到变量的内存地址 修改内存地址中的数据
//ca变成了5678
return 0;
}
const作用
const修饰普通变量,表示该变量只读。
const与指针
const char * ps1; //const修饰*ps1 *ps1只读 指针变量ps1可以赋值
char const * ps2; //const修饰*ps2 *ps2只读 指针变量ps2可以赋值
char * const ps3; //const修饰指针变量ps3 ps3只读 *ps3可以赋值(只是编译器允许)
const char * const ps4; //第一个const修饰 *ps4 第二个const修饰ps4 *ps4,ps都只读
char *const ps5 = "hello"; //const修饰ps5
*ps5 = 'x'; //编译器允许 编译不会报错 但是运行一定段错误
char str[100] = "hello";
char *const ps6 = str;
*ps6 = 'y'; //编译器允许 编译不报错 运行也没有问题
指针常量 与 常量指针
指针常量 本质是常量 指针是一个常量 ps3
常量指针 本质是指针 指针指向一个常量 ps1 ps2
常量指针常量 ps4
const修饰指针形参
经常看到指针作为形参类型时,有一个const修饰,这是为了防止实参地址中的数据在函数内部被意外地修改。用于增强代码的健壮性和可读性。