详解const在C++中的用法,const和一级指针、二级指针结合
C++与C语言中const的用法
const怎么理解?
const修饰的变量,不能作为左值进行赋值,初始化后值不能被修改!!!(内存可以修改)
const int b=10;
b=20;===>编译错误,b不能作为左值
int *p=(int*)(&b);//用一个指针指向b的内存
*p=30;//那么此时b内存的值就是30了
C++与C语言中const的区别
主要是编译方式的区别:在C语言中,const被当作变量编译生成指令,所以const修饰的变量称为常变量。在C++中,编译时,所有出现const常量名的地方都被替换成const常量的初始值,此时const修饰的量是常量(特别地当初始值不是立即数而是变量时,const修饰的量就退化成常变量了,跟C语言一样。
三种写法图示
const和一级指针的结合
分析方法
1.C++语言规范:const修饰的是离它最近的类型。
2.我们关注的是什么,我们关注的不是const修饰的类型,而是const修饰的表达式。
一图明白const和一级指针的结合
两个示例
示例1:int * 与int * const类型相同,因为const右边没有指针*,const是不参与类型的。
示例2:int * <==const int * 这种转换是错误的