简书链接:cconst
文章字数:464,阅读全文大约需要1分钟

int num=10;
int data=5;
const int value=10; 不能再给value赋值
const int *p=# const 放到int的左边,修饰的是指针所指向的值,可以修改指针地址但是不能通过(p)修改内容
int const *p =#; const放到
的左边,修饰的是指向的值,不能修改 值,但是可以修改指针 比如p=$data;
int * const p=# const放到的右边,修饰的是指针,可以修改值,不能修改指针 p=&data;报错
int const * const p=&num 地址不能修改 ,值也不能修改 p =$num或者 *p=3;都是错误的。
const int * const p应该和上面是等价的。
规律 const
号左边就是指向的值是常量,在右边就是地址是常量

也就是上面这么多const修饰的姿势,实际上总结出来只有这么几个逻辑,要么地址不可写,要么是值不可写,要么地址和值都也不可写。
char [] str="ffffff";可以修改每一个*str='';正确,是数组第一个元素。
char * p="fffff";//不可以修改 *p=’’```;错误 ,是常量