定义
const定义一个常量,变成只读,中途不能做任何修改。
没有const修饰时,变量本身可以任意修改
#include <stdio.h>
#include <stdlib.h>
int main(void){
int wife = 24;
int girl = 18;
printf("老婆的初始年龄:%d\n",wife);
printf("女孩的初始年龄:%d\n",girl);
//第一种
int *zha_nan = &wife;
*zha_nan = 25;
zha_nan = &girl;
*zha_nan = 19;
printf("渣男的girl: %d 渣男的wife: %d\n",girl,wife);
system("pause");
return 0;
}
####有const修饰时
看const修饰的是离类型(int)近,还是离指针变量名近,离谁近就修饰谁,谁就不能变。
//第二种
const int *zhi_nan = &wife;
// *zhi_nan = 26;//error C3892: “zhi_nan”: 不能给常量赋值(离int近,所以不能修改wife的值)
printf("直男老婆的年龄:%d\n",*zhi_nan);
zhi_nan = &girl;//但指针变量还可以继续指向别的地址
printf("直男女孩的年龄:%d\n",*zhi_nan);
//第三种
int *const nuan_nan = &wife;
*nuan_nan = 26;//因为离指针变量近,所以能修改int类型wife的值
printf("暖男老婆的年龄: %d\n",wife);
//nuan_nan = &girl;//error C3892: “nuan_nan”: 不能给常量赋值(所以也就不能修改指针变量的值,也就是不允许指向别的地址)
//第四种(指针变量和int类型变量都有修饰,所以相互之间都不能再修改)
const int *const super_nuan_nan = &wife;
//*super_nuan_nan = 28;//error C3892: “super_nuan_nan”: 不能给常量赋值
//super_nuan_nan =&girl;