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. Sprint第三个冲刺(第一天)

    一.Sprint介绍 任务进度: 二.Sprint周期 看板: 燃尽图:

  2. SQL Server存储过程复习(一)

    --存储过程学习篇 --.简单存储过程不带参数的学习 IF OBJECT_ID('Orders_GetAllOrders','P') IS NOT NULL DROP PROCEDURE Orders ...

  3. sql server 2008还原数据库,出现缺少介质问题

    我在sql server2008中备份数据库时,新增了一个自己建立的数据库,备份成功后,在去别的电脑总是还原数据 还原不了,最后在网上找到了解决方案

  4. ActiveReports 报表应用教程 (3)---图表报表

    ActiveReports 的图表控件支持绝大多数常用的二维和三维图表类型,包括XY图表和财务图表.通过使用图表控件的定制功能,如修改坐标轴.图注.图例等,用户可以创建任何其所需要的图表效果.用户还可 ...

  5. yii2.0用户登录,退出判断(摘录)

    文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101ix13.html 判断用户是否登录 在 Yii2.0 里面,判断用户是否已经登录,我们用下面的代码即可 ...

  6. java中使用 正则 抓取邮箱

    我们来抓取豆瓣网的邮箱吧!把这个页面的所有邮箱都抓取下来 如https://www.douban.com/group/topic/8845032/: 代码如下: package cn.zhangzon ...

  7. 测试驱动开发(TDD)的思考

    极限编程 敏捷开发是一种思想,极限编程也是一种思想,它与敏捷开发某些目标是一致的.只是实现方式不同.测试驱动开发是极限编程的一部分. 1.极限编程这个思路的来源 Kent Beck先生最早在其极限编程 ...

  8. linux实现rdp访问

    远程访问linux系统,我们常用的有终端ssh.图形界面VNC,但是VNC安全性不够,并且不够流畅.相比之下,我认为rdp更好,并且还能利用windows的远程桌面访问,非常方便. 1. 安装xRDP ...

  9. java微信开发(wechat4j)——wechat4j配置文件解读

    wechat4j的配置文件是wechat4j.properties.需要放置在项目src目录下.在wechat4j.jar中的META-INF下有一个wechat4j.properties.sampl ...

  10. 极光推送和百度lbs android sdk一起使用使用proguard 混淆的问题

    主要是http得类被混淆后,导致apk定位失败.经过确认,保留apache 的http类就好了 # To enable ProGuard in your project, edit project.p ...