关键字
2016-07-25 09:39
225 查看
一.register关键字
1. register关键字的作用
register关键字主要是请求编译器将变量尽可能地(由于CPU的寄存器是稀缺资源,所以只能尽可能的存放,不能保证所有数据都能保存在寄存器中)存储在寄存器中,省去了CPU向内存抓去数据的时间,提高程序的运行效率。
2. 什么时候使用register关键字?
一般将频繁使用的变量声明为register变量。
3. register关键字使用注意事项
1) register变量只能修饰局部变量,不能修饰全局变量和函数。(由于全局变量会被多个进程访问,如果将变量定义为register变量,只有当前进程能访问,其他进程都不能访问,所以只能修饰局部变量)。
2) register变量不能用取地址来获取其地址。(由于取地址获取的是内存的地址,而register变量保存在寄存器中)
3) register修饰的变量都是CPU所接受的数据类型。
二.static关键字
1. static关键字的作用
static关键字既能修饰变量,又能修饰函数。修饰变量既能修饰局部变量,又能修饰全局变量。
1) 修饰局部变量时,称为静态局部变量,延长变量的生存周期,程序执行结束才释放。
2) 修饰全局变量时,该全局变量只能在本文件可见,其他文件不可见。
3) 修饰函数时,该函数只能在本文件被调用,不能在其他文件中被调用。
2. 什么时候使用static关键字?
1) 当使用一个变量时,不希望其释放,可以使用static关键字。不使用全局变量的原因是全局变量对所有文件可见,比较危险。
2) 全局变量只需要在本文件使用时可以加static关键字,其他文件可以对该变量名进行重复定义,起到保护作用。
3) 函数只需要在本文件使用时可以加static关键字,其他文件可以对该函数名进行重复定义。
三.const关键字
1.const关键字的作用
const修饰的变量为只读变量,表示不能通过变量名进行修改,但可以通过变量的空间进行修改。
2.什么时候使用const关键字?
一般用来修饰函数形参,避免在函数实现时修改实参的值,便于调试。
3. const关键字使用注意事项
1) 使用const修饰变量时,变量一定要初始化。
2) 注意哪些函数形参需要使用const关键字(这是函数实现者好的体现,防止函数对实参进行修改)。
实例:
const int *p = #//不能通过p修改其指向空间的值
int * const p = #//不能通过p修改其对应空间的值
(离谁近谁不能修改自身的值)
四.extern关键字
extern声明的变量是在其他文件中定义的变量。
一个文件想要访问另一个文件的全局变量时,要进行外部声明。
五.typrdef关键字
typedef关键字作用:
1) 给数据类型重起名字(提高代码移植性);
2) 把复杂的数据类型名转换为简单的类型名,提高编写效率;
3) 起到注释某些变量的作用。
六.计算机组成原理
1. 计算机三大组成
CPU: 中央处理器(英文Central Processing Unit,CPU)是一台计算机的运算核心和控制核心,其功能主要是解释计算机指令以及处理计算机软件中的数据。
内存:从硬盘中读取数据,临时存储数据
硬盘:存储静态数据
2. CPU三大组成
运算器:运算器的主要功能是对数据进行各种运算。这些运算除了常规的加、减、乘、除等基本的算术运算之外,还包括能进行“逻辑判断”的逻辑处理能力,即“与”、“或”、“非”这样的基本逻辑运算以及数据的比较、移位等操作。
控制器:控制器是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。
控制器从存储器中逐条取出指令,分析每条指令规定的是什么操作以及所需数据的存放位置等,然后根据分析的结果向计算机其它部分发出控制信号,统一指挥整个计算机完成指令所规定的操作。
存储器(寄存器、cache):存储器的主要功能是存储程序和各种数据信息,并能在计算机运行过程中高速、自动地完成程序或数据的存取。存储器是具有“记忆”功能的设备,它用具有两种稳定状态的物理器件来存储信息。这些器件也称为记忆元件。
通常把运算器和控制器称为中央处理器。
相关文章推荐
- js获取select标签选中的值
- PAT 乙级1004. 成绩排名 (JAVA版)
- LeetCode[343] Integer Break
- DotNet 资源大全中文版,内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等
- Thinking in Java 第18章 Java I/O 系统(18.9-18.14)
- nosql之mongodb简单安装与命令使用
- HDU 5747 Aaronson(贪心)
- Android图像处理—xfermode
- 立足GitHub学编程:13个不容错过的Java项目
- 关于C#中调用接口error in deserializing body of reply message错误
- Delphi异常处理的基本原则和方法
- 328. Odd Even Linked List
- PAT 乙级1003. 我要通过!(JAVA版)
- Ehlib常用属性
- Android Studio 2.0下创建jni应用调用本地C函数(转)
- ios的手势操作之UIGestureRecognizer浅析
- 你要努力成为对的人,而不是等着遇见对的人
- 160722、Javascript函数节流
- SQL多表连接查询
- mysql max_allowed_packet 设置过小导致记录写入失败