static和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常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
static和const关键字相关推荐
- 理解PHP5中static和const关键字
PHP5中加入了很多面向对象的思想,PHP5的面向对象比较接近Java的面向对象思想.我们这里对PHP5中的static和const关键字作用进行一下描述,希望对学习PHP5的朋友有帮助. (1) s ...
- c语言中{的作用,C语言中Static和Const关键字的作用
C语言中Static和Const关键字的作用 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于(堆)中.那么关于C语言中Static和Const关键字的作用,你了解多少 ...
- C语言之头文件,static与const关键字
[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...
- C/C++ static和const关键字的作用
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...
- C语言中Static和Const关键字的的作用
static作用:"改变生命周期" 或者 "改变作用域" 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中. 1.作用 ...
- static 和 const 关键字的用法总结
static的作用: 对变量: 1.局部变量: 在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量. 1)内存中的位置:静态存储区 2)初始化:未经初始化的全局静态变量会被程序 ...
- c++中extern,static,const关键字的作用
0.extern 意思是外部的,什么是外部呢,相对的是内部,在内部之外的,我们称为外部,这里只的模块或者文件外部 这是一个修饰符,可以用来修饰哪些东西呢,能修饰的东西无非变量和函数两个,函数又分为外部 ...
- 关键字static、const、volatile的作用
关键字static的作用是什么?这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1.在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2. 在模 ...
- C/C++关键字 static 和 const
C/C++关键字 static 和 const 一.关键字static 参考:https://www.cnblogs.com/BeyondAnyTime/p/2542315.html 1. 静态全局变 ...
- static、const、volatile等关键字作用
目录 一.需要明白c语言中对象的一些属性 1.C语言中内存分配 2.变量的作用域 3.链接属性 4.存储期 二.static.const.volatile关键字作用 1.static关键字作用 2.c ...
最新文章
- python语言1010的八进制_python打印十六进制
- 英语学习APP的案例分析
- 【Android 界面效果22】Android的Tab与TabHost
- 《Breakfast At Tiffanys》
- 创建工程师文化的3个步骤 | IDCF
- python面向对象继承_四. python面向对象(继承)
- 数控铣削图案及编程_数控铣加工比普铣的优势,大多数人选择数控铣的原因
- mysql函数与事件_mysql事件函数的应用
- 照片教你eclipse通过使用gradle 打包Android
- 批量添加文件名前后缀的工具_艾孜尔江撰
- 《高效阅读——20分钟读懂一本书》读书总结
- 数字中国城市巡礼之杭州,让城市长出“神经系统”
- c 语言中strcat的用法,strcat 在 C 语言中是什么意思?
- Keil5新建工程小白指南
- Arduino servo库函数说明(舵机函数库)
- 無間道III 終極無間
- 微信小程序封装图片合成水印
- c++ IO流---输入输出流 格式控制字符
- 基于OpenXR,Collabora推开源VI-SLAM AR/VR定位系统
- [转]JavaScript格式化代码程序
热门文章
- python中的struct
- 【论文阅读】医疗影像图像增强
- java chatat delete,StringBuffer deleteCharAt(int index)
- python hbase_python 操作 hbase
- 学生成绩互帮互助分组C语言,C语言实现—学生成绩管理系统(Linux下运行)
- .netcore signalR 实时消息推送
- 2018-2019-1 20165204 实验三 实时系统
- Linux执行source /etc/profile报错“:command not found”
- 洛谷 4933 洛谷10月月赛II T2 大师
- session cookie区别 客户端存储