第12课 - 解析const和指针关系

一、C++的const常量的判别准则

(1)只有用字面量初始化的const常量才会进入符号表

(2)被volatile修饰的const常量不会进入符号表

(3)使用其它变量初始化的cosnt常量仍然是只读变量

(4)在编译期间不能直接确定初始值的const标识符,都被作为只读变量处理。

(5)使用相同类型的常量初始化const引用变量,const引用变量只是只读变量,和常量内存地址一样。

(6)使用不同类型的变量初始化const引用变量,const引用变量会成为一个新的只读变量,和初始化变量内存不一样。

上述的第(1)点如图1所示;第(2)、(3)、(4)点如图2所示;第(5)、(6)点如图3所示:

                                                                   图1

图2

图3

二、引用与指针的关系

指针是一个变量,值为一个内存地址,不需要初始化,可以保存不同的地址;通过指针可以访问对应内存地址中的值;指针可以被const修饰成为常量或者只读变量。

引用只是一个变量的新名字;对引用的操作(赋值、取地址等)都会传递到代表的变量上,const引用使其代表的变量具有只读属性;引用必须在定义时初始化,之后无法代表其它变量。

从使用C++语言的角度看;引用与指针没有任何的关系;引用是变量的新名字,操作引用就是操作对应的变量。

从C++编译器的角度看;为了支持新概念“引用”必须要一个有效的解决方案,在编译器内部,使用指针常量来实现“引用”;因此“引用”在定义时必须初始化。

引用数组的使用和注意情况如图4所示:

图4

三、小结

(1)指针是一个变量;

(2)引用是一个变量的新名字;

(3)const引用能够生产新的只读变量;

(4)在编译器内部使用指针常量实现“引用”;

(5)编译时不能直接确定初始值的const标识符都是只读变量。

发布了16 篇原创文章 · 获赞 1 · 访问量 2935

猜你喜欢

转载自blog.csdn.net/liqingjielihanjie/article/details/103656798