• 1.可以定义const常量,具有不可变性。例如:const int Max=100; Max++会产生错误;
  • 2.便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { …} 编译器就会知道i是一个常量,不允许修改;
  • 3.可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!如(1)中,如果想修改Max的内容,只需要它修改成:const int Max=you want;即可!
  • 4.可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错;
    例如:
void f(const int i) { i=10;//error! }
  • 5.可以节省空间,避免不必要的内存分配。 例如:
#define PI 3.14159 //常量宏
const double Pi=3.14159; //此时并未将Pi放入RAM中 ......
double i=Pi; //此时为Pi分配内存,以后不再分配!
double I=PI; //编译期间进行宏替换,分配内存
double j=Pi; //没有内存分配
double J=PI; //再进行宏替换,又一次分配内存!

const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干份拷贝。

  • 6.提高了效率。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

C语言中const关键字的作用相关推荐

  1. char* 赋值 const char* 释放_C/C++编程笔记:C语言中 const 关键字的作用及解析,值得收藏!...

    有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小. 为了满足这一要求,可以使用const关键字对变量加以限定: c ...

  2. C语言中定义常量的关键字是什么,C++_详解C语言中const关键字的用法,关键字const用来定义常量,如 - phpStudy...

    详解C语言中const关键字的用法 关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const ...

  3. C语言中static关键字的作用

    在C语言中static的作用如下 第一.在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放.  第二.static修饰全局变量的时候, ...

  4. C语言中static关键字的作用详解,全网最透彻

    在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ...

  5. C语言中const关键字详解

    1.什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的.(当然,我们可以偷梁换柱进行更新:) 2.为什么引入const? const 推出的初始目的 ...

  6. c语言中volatile关键字的作用

    读文章之前 可以先看一下<程序员的自我修养 >第28页 过度优化. volatile 提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直 ...

  7. C语言中const关键字的用法

    转载请注明出处http://blog.csdn.net/xingjiarong/article/details/47282255 关键字const用来定义常量,如果一个变量被const修饰,那么它的值 ...

  8. C语言中voliate关键字的作用

    一个变量用voliate关键字修饰,是要告诉编译器,这个变量的值随时可能发生变化,所以编译器每次都必须从变量对应的内存地址中获取该变量的值. voliate的常用方式: 当一个变量表示某寄存器的值时, ...

  9. c语言typeof 变量,c语言中typeof关键字

    为什么因为一个关键字而专门写一篇随笔呢?因为这个关键字在Linux里面地位非同一般!这个关键字typeof在linux内核里面使用非常广泛! 下面这两个等效声明,用于声明int类弄的变量a typeo ...

最新文章

  1. 剑指offer:面试题06. 从尾到头打印链表
  2. 用python画qq表情_用Python编写提取QQ表情的脚本
  3. java做 excel文件的 导入导出 (SSM+layer)
  4. ROS学习笔记-ROS语音识别与语音输出[2]
  5. 如何在HTTP客户端与服务器端之间保持状态(转)
  6. 【代码笔记】iOS-实现网络图片的异步加载和缓存
  7. C语言--第2次作业
  8. python excel处理模块_Python(00):openpyxl模块处理Excel文件
  9. tf.contrib.rnn.core_rnn_cell.BasicLSTMCell should be replaced by tf.contrib.rnn.BasicLSTMCell.
  10. 全球第二和第四大航运公司加入物流巨头Maersk的区块链平台
  11. 排列(Permutation) 组合(Combination)
  12. 【数学】一元函数积分学(宇哥笔记)
  13. 2021蓝桥杯预选赛题解
  14. Error:scalac: Scala compiler JARs not found
  15. Android 将drawable下的图片转换成bitmap、Drawable
  16. android obb在哪,.obb是什么文件?obb文件怎么用/放在哪里
  17. java 山洞过火车 java,我的世界稀有PE种子:罕见双层末地门!
  18. 为什么近几年一直在说互联网进入了下半场?
  19. 中小学学校视频直播系统怎么搭建
  20. 安卓9.0系统出现 CLEARTEXT communication to XX not permitted by network security policy

热门文章

  1. silabs 硬件抽象层
  2. hive 中文字符过滤_Hive UDF 过滤字符串中的中英文标点符号
  3. git基本命令ls、cat、mv、touch简述
  4. Matlab 中文论坛等待验证会员
  5. “正在加载中...”CSS效果实现
  6. linux samba 配置ldap认证,Samba集成Ldap认证
  7. 深度解析:为什么跨链桥又双叒出事了?
  8. vue之 上传 excel文件
  9. 前端基础查漏补缺知识
  10. 我在 ipad mini 里都装了些什么软件