C语言关键字
来源:互联网 发布:mac mini 换ssd 编辑:程序博客网 时间:2024/06/14 22:06
register
register关键字的作用:
请求CPU尽可能让变量的值保存在CPU内部的寄存器中,减去CPU从内存中抓取数据的时间,提高程序运行效率。
register作用的实现原理:
扩展:CPU组成,计算机系统组成,数据处理流程
什么时候使用register?
一般,我们将频繁被访问的变量,用register修饰
(因为CPU内存资源是有限的,是稀缺的,不可能将所有变量都声明为register变量)
使用register关键字应注意什么?
1.只有局部变量才可以被声明用register修饰
(register不能修饰全局变量和函数的原因:全局变量可能被多个进程访问,而用register修饰的变量,只能被当前进程访问)
2.不能用取地址获取用register修饰的变量的地址(原因:变量保存在寄存器中,而取地址获取的地址的是内存的地址)
3. 用register修饰的变量一定要是CPU所接受的数据类型
Static
Static关键字的作用:
Static既可以修饰变量,也可以修饰函数,修饰变量时,既可以修饰局部,也可修饰全局。
Static修饰静态局部变量,延长变量的生命周期,直至程序结束,这个变量才释放。
Static修饰全局变量,使其只可在本文件可访问,其他文件不可见。
(Static修饰的变量都保存在数据段静态数据区中,未初始化时,系统将默认初始化为0)
Static修饰函数,使其只可在本文件可调用,其他文件不可调用
什么时候使用static修饰变量
当希望一个变量直至程序结束才释放时,用Static修饰静态局部变量。
当希望一个全局变量只可在本文件可访问,其他文件不可见时,用Static修饰全局变量。
当希望一个函数只可在本文件可调用,其他文件不可调用时,用Static修饰函数。
extern
extern关键字的作用:
extern用来外部声明一个全局变量,这个全局变量在另一个文件中被定义
使用extern关键字应注意什么?
标明数据类型 例:extern intcount;
什么时候使用extern修饰变量
在a.c中想使用b.c的全局变量用extern 外部声明
const
const关键字的作用:
const修饰变量,是这个变量变成只读变量,变量对应的空间的值是可变的,但不能用变量名来修改空间中的值。
使用const关键字应注意什么?
使用const关键字修饰的变量,一定要对变量进行初始化
int *const p = # p++ ✘
const int *p = # (*p)++ ✘
int const *p = # (*p)++ ✘
(离谁进,谁就不可以改变)
什么时候使用const修饰变量?
函数形参用const修饰,防止函数实现过程中,修改了实参的值。
typedef
typedef关键字的作用:
给数据类型定义一个新名字,
1. 提高了移植性
2. 简化复杂的类型声明,提高编码效率
3. 解释数据类型的作用
voliate
voliate关键字的作用:
当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用valatile,则编译器将对所声明的语句进行优化。(简洁的说就是:volatile关键词影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错)
Inline
inline关键字的作用:
内联inline是给编译器的优化提示,如果一个函数被编译成inline的话,那么就会把函数里面的代码直接插入到调用这个函数的地方,而不是用调用函数的形式。
使用inline关键字应注意什么?
内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。
- 【C语言】C语言关键字
- C语言-关键字
- C语言关键字列表
- C语言32关键字
- C语言关键字
- C语言关键字----Const
- C语言关键字volatile
- c语言关键字
- C语言关键字解析
- c语言32关键字
- c语言关键字
- C语言中的关键字
- c语言关键字static
- C语言enum关键字
- C语言union关键字
- C语言return关键字
- C语言void关键字
- C语言关键字
- TCP重传与确认机制
- [leetcode] 118. Pascal's Triangle
- hbase 协处理器
- 《Windows核心编程》之”Unicode vs ANSI“
- JQuery学习之旅(1)
- C语言关键字
- windows+xampp环境下升级mysql
- SSL常见加密算法
- onSaveInstanceState() 和 onRestoreInstanceState()
- HDU 5742 It's All In The Mind(贪心)
- Hadopp 入门 基本概念(一)
- 关于android串口通信
- 简单实现Android搜索功能 显示清除历史搜索记录
- Graylog——日志聚合工具的后起之秀