<高质量C>C语言基础和变量(二)
来源:互联网 发布:荣耀盒子 软件安装 编辑:程序博客网 时间:2024/05/28 20:19
接上篇cache命中率,因为CACHE的容量远远小于内存,它只可能存放内存的一部分数据。CPU自然是先访问CACHE,再访问主存,如果数据在CACHE中为命中,在不在内存中为不命中,这就有个比例问题,这个比例就是命中率。如是按照列行索引数组,经常跨存储页,由于CACHE容量小,cache中的内容只能保存有限页,所以命中率就会降低,导致索引效率降低。
下面说说,C语言的常量。
常量分为字面常量(直接出现的字符,字符串,各种进制的数等),符号常量(#define和const定义的常量),契约型常量,枚举常量。
字面常量只能引用不能修改,除了字符串外,无法去一个字面常量的地址,如 int *p=&5;就是错误的。同时通过字符串地址修改其中字符也是错误的,如 char *p="abc"; *(p+2)='k';就是错误的。字面常量一般保存在符号表里。
符号变量中,由于#define在编译时就被替换,所以本质上就是字面常量。const,即不能修改的变量,在C语言中,会给const变量分配存储空间(外连接),同时对于基本类型的const变量,编译器会在内存中创建拷贝,所以通过该变量地址修改的值是无效的,只能做到修改拷贝值,而不是const变量的值。
const与define的比较,const定义的常量有类型,所以会经过静态类型安全检查机制,有的ide支持const类型的的调试。
定义常量的集中方法:
方法一:在公用头文件中定义static并初始化
static const int max_length=1024;
方法二:在公用头文件中声明为extern ,
extern const int max_length;
并在源文件中定义。
const int max_length=1024;
方法三:如果是整型常量,在公用头文件中定义 enum类型。
方法一与方法二的比较:
方法一:方便维护。但是每个包含它的文件都会生成一份拷贝,同时后面初始化的字面常量也会生成拷贝,浪费空间。
方法二:影响小,改变一个值只需要重新编译该源文件,节约存储。缺点是需要修改源文件。
到底用哪种方法完全就是看项目要求了。
这几种方法在C与C++中有者本质的区别,主要原因是C中extern是外连接,而在C++中是内连接。
下面补充static的用法(C语言):
1.static用于变量,分配在静态存储区, 在程序整个运行期间都不释放。并且初始化只有一次。
2.static用于函数,是为了限制函数的作用域在所在文件中,这样的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其 它文件中的函数同名。
- <高质量C>C语言基础和变量(二)
- <高质量C>C语言基础与变量
- <高质量C>C程序设计基础(二)
- 高质量程序设计指南:C++/C语言
- 高质量C语言编程习惯和注意事项
- C语言基础--变量
- C语言入门教程 (二) 变量和常量
- C语言基础—常量和变量
- C语言常用基础数据类型和变量
- 黑马程序员-----高质量C语言编程
- 高质量c编程指南 之二
- 高质量C\C++编程(二)
- c语言基础 二
- C语言基础二
- C语言基础二
- C语言基础(二)
- C语言基础(二)
- 读书笔记_高质量程序设计指南C++/C语言_10_文件结构和版式
- 我的RUBY之路--第三周(03) capistarano 部署 rails
- Linux OS--中断
- 软考论文的六大应对策略V1.0
- 数据结构实验之链表七:单链表中重复元素的删除
- 单例模式(Singleton)
- <高质量C>C语言基础和变量(二)
- 阅读KJFrameAndroid--各种基类和控件注入
- 浴柜行业抓住机遇 电商之路很辉煌
- 建造者模式(Builder)
- 第十一周项目六:回文素数
- 记一次C++拷贝构造函数带来问题
- Android SDK更新 Connection to http://dl-ssl.google.com refused 解决方法
- flashback table快速恢复误删除的数据
- 大数据实时计算工程师/Storm工程师职业学习路线图