目录
目标
- 初步了解关键字的分类
- 深刻理解变量
- 深刻理解定义和声明
- auto关键字的理解
- 站在存储结构的角度,理解register
关键字分类
c90是32个关键字,c99是37个
关于程序
- 任何程序在被运行之前都必须被加载到内存中
- 在win中,双击的本质运行程序,将程序加载入内存(程序没被载入内存时,在硬盘中)
为什么要把程序加载入内存呢?
因为cpu访问内存快
定义和声明
什么是变量
内存中开辟特定大小空间,用于保存数据
所有的变量都要在内存的某个位置开辟空间
如何定义变量(如何使用)
int x=10;
char c='a';
double d=3.14;
变量定义的本质
在内存中开辟一块空间,用来保存数据
定义与声明
定义:开辟空间的
声明:告知
最宽宏大量的关键字-auto
变量的分类--补充
局部变量:包含在代码块中的变量.具有临时性,进入代码块,创建局部变量,退出代码块,自动释放
全局变量:所有函数外部定义的变量,具有全局性
变量的作用域-补充
局部变量:只在本代码块内有效
全局变量:整个程序运行期间都有效
作用域:该变量的有效区域
生命周期:时间的概念,从开辟到释放
auto相关
一般在代码块中定义的变量-局部变量默认都是auto修饰的(只不过被省略了)
auto int a=10;前提示a是局部变量
最快的关键字-register
本质上把硬盘里的数据加载到内存中其实就是一种缓存技术
同样的,也可以把内存中的数据缓存到cache或者regisster中
对于任何硬件而言,充当上游硬件的缓存
cpu访问数据的时候,以最小的成本,达到最高的效率
寄存器存在的本质
硬件层面上提高计算机运算效率,因为不需要再从内存中读取数据
register修饰变量
作用:尽量将所修饰变量放入寄存器中,从而达到提高效率的目的
什么样的变量适合采用register呢?
1.局部的(全局会导致cpu寄存器被长时间占用)
2.不会被写入的(写入就需要写回内存改变原存储的数据,后续还要继续读取检测的话,register便没有意义)
3.高频被读取的(提高效率所在)
4.如果要是用,请不要大量使用,寄存器数量有限
注意:一个变量被register修饰,可以正常使用,不可被寻址,也就是&,直接使用就可以了