const的作用

const是C语言的一种关键字,起受保护,防止以外的变动的作用!可以修饰变量,参数,返回值,甚至函数体。const可以提高程序的健壮性,你只管用到你想用的任何地方。

(一)const修饰参数。const只能修饰输入参数。

1、如果输入参数是指针型的,用const修饰可以防止指针被意外修改。

2、如果参数采用值传递的方式,无需const,因为函数自动产生临时变量复制该参数。

3、非内部数据类型的参数,需要临时对象复制参数,而临时对象的构造,析构,复制较为费时,因此建议采用前加const的引用方式传递非内部数据类型。而内部数据类型无需引用传递。

(二)const修饰函数返回值。

1、函数返回const指针,表示该指针不能被改动,只能把该指针赋给const修饰的同类型指针变量。

2、函数返回值为值传递,函数会把返回值赋给外部临时变量,用const无意义!不管是内部还是非内部数据类型。

3、函数采用引用方式返回的场合不多,只出现在类的赋值函数中,目的是为了实现链式表达。

(三)const+成员函数。任何不修改数据成员的函数都应该声明为const类型,如果const成员函数修改了数据成员或者调用了其他函数修改数据成员,编译器都将报错!

class stack

{

public:

int GetCount(void) const ;

private:

int m_num;

};

int stack::GetCount(void) const

{

m_num++;

}

编译器输出错误信息:error C2166: l-value specifies const
object。

(四)const 修饰变量,表示该变量不能被修改。

1、const char *p 表示 指向的内容不能改变

2、char * const
p,就是将P声明为常指针,它的地址不能改变,是固定的,但是它的内容可以改变。

3、这种const指针是前两种的结合,使得指向的内容和地址都不能发生变化.

const double pi = 3.14159;

const double *const pi_ptr = π

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

2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。


最新文章

  1. java求字符串数组交集、并集和差集
  2. screen
  3. sprinvMVC路径拦截
  4. Kids and Prizes(SGU 495)
  5. 为网站加入Drupal星球制作RSS订阅源
  6. 求最低分最高分---c#(冒泡排序的运用)
  7. inline-block代替浮动布局float:left列表布局最佳方案
  8. ONVIFclient搜索设备获取rtsp解决开发笔记(精华文章)
  9. Android数据库--Sqlcipher的使用(一)
  10. js的apply()与call()的区别
  11. flask 扩展之 -- flask-mail
  12. Spark Structured streaming框架(1)之基本使用
  13. Android为TV端助力之WebView开发踩坑一
  14. 杭电1257 dp(java)
  15. centos 编译安装PHP5.4
  16. python 构造函数作用
  17. SolrCore Initialization Failures - Max direct memory is likely too low
  18. libgdx学习记录17——照相机Camera
  19. linux开启swap(磁盘缓存)操作
  20. python singleton design pattern super() 多继承

热门文章

  1. 获取Activity的返回参数
  2. Audio/Movie/Image
  3. laravel5表单验证
  4. MySQL 5.7.18 在centos下安装记录
  5. 6.etc目录下重要文件和目录详解
  6. httpwebrequest webrequest webresponse 总结
  7. 设计模式之原型(prototype)模式
  8. 简述MVC模式
  9. 几个ADB常用命令
  10. ZenCoding[Emmet]語法簡介【轉】