在c语言中const作用的的全面总结

在c语言中const作用的的全面总结

ID:9007100

大小:54.00 KB

页数:6页

时间:2018-04-14

在c语言中const作用的的全面总结_第1页
在c语言中const作用的的全面总结_第2页
在c语言中const作用的的全面总结_第3页
在c语言中const作用的的全面总结_第4页
在c语言中const作用的的全面总结_第5页
资源描述:

《在c语言中const作用的的全面总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用如下表所示:No.作用说明参考代码1可以定义const常量 constintMax=100;2便于进行类型检查const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误voidf

2、(constinti){.........}//对传入的参数进行类型检查,不匹配进行提示3可以保护被修饰的东西防止意外的修改,增强程序的健壮性。voidf(constinti){i=10;//error!}//如果在函数体内修改了i,编译器就会报错4可以很方便地进行参数的调整和修改同宏定义一样,可以做到不变则已,一变都变 5为函数重载提供了一个参考 classA{......voidf(inti){......}//一个函数voidf(inti)const{......}//上一个函数的重载......};6可以节省空间,避免不必要的内存分配const定义常量从

3、汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝#definePI3.14159//常量宏constdoulbePi=3.14159;//此时并未将Pi放入ROM中......doublei=Pi;//此时为Pi分配内存,以后不再分配!doubleI=PI;//编译期间进行宏替换,分配内存doublej=Pi;//没有内存分配doubleJ=PI;//再进行宏替换,又一次分配内存!7提高了效率编译器通常不为普通const常量分

4、配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高  二、Const的使用1、定义常量(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。TYPEconstValueName=value;constTYPEValueName=value;(2)将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在程序其他地方进行了定义.extendconstintValueName=

5、value;2、指针使用CONST(1)指针本身是常量不可变(char*)constpContent;const(char*)pContent;(2)指针所指向的内容是常量不可变const(char)*pContent;(char)const*pContent;(3)两者都不可变constchar*constpContent;(4)还有其中区别方法,沿着*号划一条线:如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。 3、函数中使用CONST(1)co

6、nst修饰函数参数a.传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)voidfunction(constintVar);b.参数指针所指内容为常量不可变voidfunction(constchar*Var);c.参数指针本身为常量不可变(也无意义,因为char*Var也是形参)voidfunction(char*constVar);d.参数为引用,为了增加效率同时防止修改。修饰引用参数时:voidfunction(constClass&Var);//引用参数在函数内不可以改变voidfunction(constTYPE&Var);//引用参数

7、在函数内为常量不可变这样的一个const引用传递和最普通的函数按值传递的效果是一模一样的,他禁止对引用的对象的一切修改,唯一不同的是按值传递会先建立一个类对象的副本,然后传递过去,而它直接传递地址,所以这种传递比按值传递更有效.另外只有引用的const传递可以传递一个临时对象,因为临时对象都是const属性,且是不可见的,他短时间存在一个局部域中,所以不能使用指针,只有引用的const传递能够捕捉到这个家伙.(2)const修饰函数返回值const修饰函数返回值其实用的并不是很多,它的含义和const修饰普通变量以及指针的含义基本相同。a.constintfun

8、1()//这个其实无意义

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。