C语言之类型修饰符

阅读: 评论:0

C语言之类型修饰符

C语言之类型修饰符

auto:

 默认存储类型,常忽略不写。


register:

register int a;  //限制变量定义在(CPU)寄存器上的修饰符


  • 用于定义一些快速访问的变量
  • 编译器会尽量的安排CPU的寄存器去存放这个a,如果寄存器不足时,a还是放在存储器中
  • 取地址符&对register不起作用

寄存器在cpu中,数据存储其中访问速度很快

数据放在存储器(内存)中,访问速度相对很慢


static:

修饰三种数据:

     1.函数内部的变量(局部变量):static修饰的局部变量存放在全局数据区的静态变量区。static修饰的局部变量如未初始化会自动初始化为0;延长了局部变量的生命周期,直到程序运行结束以后才释放。 同时,离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。

     2.函数外部的变量(全局变量): 这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。 

          int a ===>static int a

          int fun(){}

     3.函数:C语言中,不加static修饰的函数对所有的源文件都是可见的;加static修饰符,则这个函数的只能在本文件中调用,不能被其他文件调用。

           int fun()===>static int fun()


extern:

extern用在变量或函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”


const:
只读,建议性,不具备强制性 !=常量;

 使用const修饰的意义:
       关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理 其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。


volatile:

C语言中volatile关键字的作用
告知编译器编译方法的关键字,不优化编译。优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
volatile修饰变量的值的修改,不仅可以通过软件,也可以通过其他方式(硬件外部的用户)。

简单地说就是防止编译器对代码进行优化。比如如下程序:

XBYTE[2]=0x55;
XBYTE[2]=0x56;
XBYTE[2]=0x57;
XBYTE[2]=0x58;

对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条语句进行优化,认为只有XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一地进行编译并产生相应的机器代码(产生四条代码)。

一般说来,volatile用在如下的几个地方:

1、中断服务程序中修改的供其它程序检测的变量需要加volatile;

2、多任务环境下各任务间共享的标志应该加volatile;

3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;

本文发布于:2024-01-31 11:05:30,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170667033128057.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类型   语言   修饰符
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23