C/C++中const关键字的用法小结-创新互联
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网站空间、营销软件、网站建设、德化网站维护、网站推广。Const作用
NO. | 作用 | 说明 | 参考 |
---|---|---|---|
1 | 可以定义const常量 | const int Max = 100; | |
2 | 便于进行类型检查 | const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误 | void f(const int i) { ………} //对传入的参数进行类型检查,不匹配进行提示 |
3 | 可以保护被修饰的东西 | 防止意外的修改,增强程序的健壮性 | void f(const int i) { i=10; //error! } //如果在函数体内修改了i,编译器就会报错 |
4 | 可以很方便地进行参数的调整和修改 | 同宏定义一样,可以做到不变则已,一变都变 | |
5 | 为函数重载提供了一个参考 | class A { void f(int i) {……} //一个函数 void f(int i) const {……} //上一个函数的重载 …… }; | |
6 | 可以节省空间,避免不必要的内存分配 | const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝 | define PI 3.14159 //常量宏 const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 …… double i=Pi; //此时为Pi分配内存,以后不再分配! double I=PI; //编译期间进行宏替换,分配内存 double j=Pi; //没有内存分配 double J=PI; //再进行宏替换,又一次分配内存! |
7 | 提高了效率 | 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高 |
提到 const 都知道是修饰常量的,在一个变量前加上const 关键字后这个常量就不可以再赋值了!
C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理,所以说const的存在一定有它的合理性,与预编译指令相比,const修饰符有以下的优点:
1、预编译指令只是对值进行简单的替换,不能进行类型检查
2、可以保护被修饰的东西,防止意外修改,增强程序的健壮性
3、编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
(以上三点摘抄自:https://www.jb51.net/article/70831.htm)
const 的应用
1 定义常量
const int a=5; int const a=5;
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站名称:C/C++中const关键字的用法小结-创新互联
文章来源:http://scjbc.cn/article/ddiogj.html