C语言关键字

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关键字应注意什么

内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值