一、const和一级指针的结合
const int a=10; const修饰谁(例如a),谁不变。a前的类型名看作是透明。
下面根据三个代码理解const的用法
第一段代码:
*p进行解引用可以对a的值进行改变,p并未受到const的修饰所以其值也可以改变。
第二段代码:
第三段代码:
总结:
const int *q = &a;
q的指向的内容值不能做修改
q的指向为常变量
int * const q = &a;
q 变量本身为常变量,也就是q中存放的地址不能发生修改
二、判断下列语句的正确与否
第一组:
分析:
如果第一句是正确的的话,则第二句必定可以解引用来修改a的值
所以一二句都错误
应该改为:const int *p = &a;
第二组:
第五句限定了s的指向
因为a的值不允许做任何修改所以
第五个不是正确的 ,如果我对s的指向进行限定那么我就可以通过*s来改值显然不符合题目要求
所以应该为const int *s=&a;
第七句也为错的,没有对*s做限定,*s指定的是a
第三组
二级指针与const的结合
前三句的示意图
下来是每一句的解析:
*P=1
**q=2
*q=&b
**q=3;
p=&a
**q=1