const限定符

c++有了新的const关键字,用来定义常变量,可以替C语言中的#define。关于const限定符,有以下需要注意:

1.创建后值不再改变

2.作用范围在文件内有效

3.添加extern关键字,使多个文件共用同一个常变量

另外,int const与const int是等效的。

const指针

创建const指针时,const,*和变量类型的符号顺序会给人很大的困扰。一般来说,按照从右向左读的方式来判断其含义。

1.

const int *p=&i;

与下面的语句等效。

(const int) *p=&i;

代表指向const int类型的指针。

2.

int *const p=&i;

与下面的语句等效

int *(const p)=&i;

代表指向int类型的常指针。这个指针一直指向i,不可以改变指针指向的位置,可以改变所指向的变量的值。

*p=;//正确

3.

const int *const p=&i;

代表指向常变量的常指针,不可以改变指针的指向,也不可以改变指针所指变量的值。

*p=;//错误

所指的类型是const int,不可以修改它的值。

这里,左边的const叫做底层const,右边的const叫做顶层const

判断const指针的简便方法

把*读作"pointer to",从右至左念:

b是一个常量

const int b;  /* b is a int const */
int const b; /* b is a const int */

p是一个普通指针,指向一个常量

const int *p; /* p is a pointer to int const */
int const *p; /* p is a pointer to const int */

p是一个常量指针,指向一个普通变量

int *const p;  /* p is a const pointer to int */

p是一个常量指针,指向一个常量

const int *const p;  /* p is a const pointer to int const */
int const *const p; /* p is a const pointer to const int */

C++杂谈(一)const限定符与const指针的更多相关文章

  1. C++之const限定符(顶层const,底层const)

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7050815.html C++之const限定符(顶层const,底层cons ...

  2. C++之const限定符

    作者:tongqingliu 转载请注明出处: C++之const限定符 const初始化 const的特点: 用const加以限定的变量,无法改变. 由于const对象定义之后就无法改变,所以必须对 ...

  3. 浅谈const限定符

    什么是const限定符? Const限定符是我们通常所说的常量限定符,被const修饰的对象具有常量性质,只能读,不能写. 为什么使用const限定符? 用const变量取代“魔数”,代码更容易理解和 ...

  4. C++const限定符

    在C语言中我们使用#define宏定义的方式来处理符号常量.而在C++中有一种更好的处理符号常量的方法,那就是使用const关键字来修改变量声明和初始化.这种处理常量方式的好处不言而喻:如果程序在多处 ...

  5. const 限定符

    1.定义const对象 const限定符把一个对象转换成一个常量 const int Bufsize = 512; 定义Bufsize 为常量并初始化为512.变量Bufsize仍然是一个左值,但是不 ...

  6. C++ Primer 第二章 引用 指针 const限定符

    1.引用: 为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d也就是声明的变量名(声明符就是变量名). PS:1.通过图片中编译所提示的报错信息 ...

  7. 指针和Const限定符

    指针和Const限定符 1.指向const对象的指针 如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针具有const特性. const d ...

  8. C++ const 限定符

    C++ const 限定符 作用:把一个对象转换成一个常量 用法:const type name = value; 性质:1. 定义时必须初始化,定义后不能被修改.2. 类中的const成员变量必须通 ...

  9. const限定符的作用

    const限定符的作用:                                     1.定义const常量:const可以将一个对象变成一个常量,不可被修改,所以定义的 时候必须进行初始 ...

随机推荐

  1. 移动前端页面与Chrome的远程真机调试

    一年不见,博客园都长草啦...... 前几日刚入手新手机小米5,系统真心流畅呀.为啥要买小米5呢,因为要提高生产力呀,好好玩移动前端开发呀哈哈哈 那么问题来了,要怎么调试手机上的前端页面呢? 很久很久 ...

  2. DBSet Class(EF基础系列11)

    Method Name Return Type          Description Add Added entity type Adds the given entity to the cont ...

  3. Can you explain Lazy Loading?

    Introduction Lazy loading is a concept where we delay the loading of the object until the point wher ...

  4. vim编辑器,管道,输入输出重定向

    1.vim的认识及其一些常用指令 a, 认识vim的命令行模式和插入模式: 当vim运行后默认进入该模式,他可以控制屏幕光标的移动,字符.字或行的删除,移动复制某区段及进入Insert mode下,或 ...

  5. [moka学习笔记]yii2.0 rules的用法(收集,不定期更新)

    public function rules(){ return [ ['title','required','message'=>'标题不能为空'], ['title','string','mi ...

  6. YII页面跳转

    $criteria = new CDbCriteria; $criteria->select = array('ziduan"); $res = Model::model()-> ...

  7. jquery 拓展

    1. 概述 jquery允许拓展自定义的方法, 绑定到$.fn对象上, 编写一个jQuery插件的原则: 给$.fn绑定函数,实现插件的代码逻辑: 插件函数最后要return this;以支持链式调用 ...

  8. js removeChild 方法

    1. 概述 删除后的节点虽然不在文档树中了,但其实它还在内存中,可以随时再次被添加到别的位置. 当你遍历一个父节点的子节点并进行删除操作时,要注意,children属性是一个只读属性,并且它在子节点变 ...

  9. ASP.NET Web API默认支持的媒体类型(SupportedMediaTypes)

    JsonMediaTypeFormatter XmlMediaTypeFormatter ( application/xml  text/xml) FormUrlEncodedMediaTypeFor ...

  10. ng-show

    //当ng-show="false"时,自动添加 #animate.ng-hide { } #animate.ng-hide-add { } #animate.ng-hide-ad ...