|
发表于 2017-8-22 08:47:27
|
显示全部楼层
本帖最后由 丶忘却的年少o 于 2017-8-22 08:51 编辑
代码拿去你自己去测试下,最好手打一次。如果不懂可以继续问,如果懂了就点下“最佳答案”
- #include <stdio.h>
- int main(void)
- {
- int num = 0;
- const int p = 1;
- int const p1 = 2; //const在int前后都是一样的
- const int *p2 = &p;
- int const *p3 = &p;
- int *const p4 = #
- const int *const p5 = #
- //*p2 = 5;这样是错误的,const是让*p2变成只读
- p2 = # //可以改变p2的指向,间接的改变*p2的值
- printf("addr num:%p p:%p p2:%p p2 = %d\n", &num, &p, p2, *p2);
- //*p3 = 5;道理一样
- p3 = # //可以改变p3的指向,间接的改变*p3的值
- printf("addr num:%p p:%p p3:%p p3 = %d\n", &num, &p, p3, *p3);
- //p4 = #错误,const是让p4变成只读,无法改变自身指向
- *p4 = 5; //但是解引用没有被只读,可以修改(注意必须指向不是只读的变量)
- printf("addr num:%p p4:%p p4 = %d\n", &num, p4, *p4);
- /*p5就不用说了吧,结合p2,p4你就能理解不能改变p5指向也不能改变*p5的解引用*/
- return 0;
- }
复制代码
|
|