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. Asp.Net 三层架构之泛型应用

    一说到三层架构,我想大家都了解,这里就简单说下,Asp.Net三层架构一般包含:UI层.DAL层.BLL层,其中每层由Model实体类来传递,所以Model也算是三层架构之一了,例外为了数据库的迁移或 ...

  2. .net中清理内存,清理占用内存方式方法

    #region 内存回收 [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize") ...

  3. jquery自定义插件——window的实现

    本例子实现弹窗的效果: 1.jquery.show.js /* * 开发者:lzugis * 开发时间:2014年6月10日 * 实现功能:点击在鼠标位置显示div * 版本序号:1.0 */ (fu ...

  4. 使用jQuery库改造ajax

    html页 ---------------------------------------------------------------------------------------------- ...

  5. No.001:Two Sum

    问题: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...

  6. JavaWebSession

    一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...

  7. windows下redis启动报Creating Server TCP listening socket *:6379: bind: No such file or directory

    解决方法: 按顺序输入如下命令就可以连接成功 # redis-cli.exe# > shutdown# > exit# redis-server.exe redis.windows.con ...

  8. mysql服务器io等待高定位与分析

    这两天发现公司好几台阿里云ECS上的mysql生产服务器繁忙期间io等待高达百分之二三十(估计九成是没有write back),而且确定是mysql进程产生,由于跑的应用过多,开发和维护无法直接确定哪 ...

  9. Cache&Session Viewer

    用于查看和删除网站Cache https://github.com/sdf333/Aspy

  10. lazyload.js详解

    简介 lazyload.js用于长页面图片的延迟加载,视口外的图片会在窗口滚动到它的位置时再进行加载,这是与预加载相反的. 优点: 它可以提高页面加载速度: 在某些情况清晰它也可以帮助减少服务器负载. ...