万能const限定符与指针
来源:互联网 发布:perl语言编程pdf 编辑:程序博客网 时间:2024/06/01 12:48
不记得谁说过,能用const的时候尽量用const。确实,const为增加程序的健壮性做出了很大贡献,但是const修饰指针的时候还是值得注意的。
一.指向const对象的指针;
如果指针指向const对象,那么很显然不能通过指针改变其所指向的const值。为了保证这个特性,C++语言强制要求指向const对象的指针也必须要具有const特性。
const double = 1.0;
const double *cpt;
cpt=&d;
const类型的指针变量为什么可以重新赋值?其实这里的cpt是一个指向double类型const对象的指针,const限定的是cpt指针所指向的对象类型,而并非cpt本身。也就是说,cpt本身并不是const。所以cpt在定义的时候不需要一定初始化,允许给cpt重新赋值,指向另一个const对象。
需要注意:可以把一个普通对象的地址赋给指向一const对象的指针,但不可以把一个const对象地址赋给一个普通类型指针,否则会出现编译错误。不能使用指向const对象的指针修改基础对象。无论const指针指向的对象是不是const类型,系统都会把它所指的所有对象都视为const,仅限于该指针的const对象(通过该指针不能修改其值);
二.const指针;
除指向const对象的指针外,C++语言还是提供了const指针——本身的值不能修改。
int iNum = 1;
int * const icpt=&iNum;
这里的icpt是const类型——不能再指向其他的对象。任何企图给const指针赋值的行为都回导致编译错误。这里值得注意的是指针本身的const类型并没有说明是否能用该指针修改它所指向对象的值。指针所指对象的值能否修改完全取决于该对象的类型。
int iNum = 5;
int * const icpt=&iNum;
*icpt=4;//这里完全可以,因为iNum是普通变量
三.指向const对象const指针;
这里要说明的就是上两种情况的结合出现,即const类型的指针指向了const类型的对象。
const double pi=3.14;
const double * const pt=π
- 万能const限定符与指针
- 万能const限定符与指针
- 指针与const限定符
- 指针与const限定符
- 指针与const限定符
- 指针与const限定符
- 指针与const限定符
- 指针与const限定符
- 指针与const限定符
- 指针与const限定符
- 指针与const限定符
- 指针与const限定符
- 关注C++细节——万能const限定符与指针
- C++中的指针与const限定符
- C++中指针与const限定符
- C++中const限定符与指针
- C++杂谈(一)const限定符与const指针
- 2.4Const限定符(const初始化,const与引用,const与指针,const指针,顶层const,constexpr)
- POJ 3436 最大流
- 中华人民共和国铸币图谱
- AS3 CheckBox ---- 复选框类
- 第八周任务3
- Linux跨平台C++代码解决方案(1)
- 万能const限定符与指针
- 宏展开出错
- 3D图形学矩阵完全解析傻瓜版
- 在PC机上BC45编译运行ucosii方法
- 浅谈指针使用中注意事项
- EXT GWT报错
- (oracle数据库基础)第六章 游标和异常管理
- 利用WebService制作天气预报查询
- Per Pixel Lighting [Part 2]