ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### const修饰普通变量 ~~~ // const int num1 = 100; // num1 = 200; // // printf("%d\n", num1); //报错,因为常量是不可修改的 const int num2 = 100; int *p = &num2; //可以通过指针修改常量的值 *p = 300; printf("%d\n", num2); ~~~ ``` 300 ``` ### const修饰指针类型 如果const修饰int * 类型 不能改变指针变量指向的内存地址的值,但是可以改变指针指向的地址. ~~~ int num1 = 10; int num2 = 20; const int *p; p = &num1; //*p = 100; //不可以 p = &num2; //可以 printf("%d\n", *p); ~~~ ``` 20 ``` ### const修饰指针变量 const修饰指针变量,能改变指针变量指向地址的值,但是不能改变指针指向的地址. ~~~ int num1 = 10; int num2 = 20; int *const p = &num1; //p = &num2; //不可以 *p = 100; //可以 printf("%d\n", *p); ~~~ ``` 100 ``` ### const修饰类型和值 以下方式可以通过二级指针来修改. ~~~ int num1 = 10; int num2 = 20; const int *const p = &num1; p = &num2; //不可以 *p = 100; //不可以 printf("%d\n", *p); ~~~ ### 这样记 ``` const int p; // p 为常量,初始化后不可更改 const int* p; // *p 为常量,不能通过*p改变它指向的内容 int const* p; // *p 为常量,同上 int* const p; // p 为常量,初始化后不能再指向其它内容 ```