关键字const的作用

我为什么还要如此看重关键字const呢?我也如下的几下理由:

1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)

2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。

3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。


const关键字至少有下列5个作用:

(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;

(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;

(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;

(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;

(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。


举例:

// const两种用法

// const:修饰基本变量p

// 这两种写法是一样的,const只修饰右边的基本变量b

const int b = 20; // b:只读变量

int const b = 20; // b:只读变量

// 不允许修改值

b = 1;

// const:修饰指针变量*p,带*的变量,就是指针变量.

// 定义一个指向int类型的指针变量,指向a的地址

int *p = &a;

int c = 10;

p = &c;

// 允许修改p指向的地址,

// 允许修改p访问内存空间的值

*p = 20;

// const修饰指针变量访问的内存空间,修饰的是右边*p1,

// 两种方式一样

const int *p1; // *p1:常量 p1:变量

int const *p1; // *p1:常量 p1:变量

// const修饰指针变量p1

int * const p1; // *p1:变量 p1:常量

// 第一个const修饰*p1 第二个const修饰 p1

// 两种方式一样

const int * const p1; // *p1:常量 p1:常量

int const * const p1;  // *p1:常量 p1:常量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注:这是第三遍读《C语言深度解剖》,想想好像自从大学开始就没读完过几本书,其中谭浩强的那本《C语言程序设计(第四版...
    HavenXie阅读 1,765评论 1 6
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 5,044评论 0 14
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,364评论 0 6
  • 70后的老王、80后的小李和90后的小牛(牛耀三)在一个领导下面干活儿。又到一年收获季。一天开会,领导说:这几天工...
    新雅人阅读 532评论 1 2
  • 其实情人节我是有点抗拒的。。 作为一枚已婚已育妇女 俺还是舍不得掐死那个少女心 然而老公是标准的理工直男 鄙视各种...
    yaknow阅读 176评论 0 0