存储类相关的关键字简介(含static+链接属性)

auto           

      修饰局部变量表示动态局部变量,分配到栈上。

 

register      

       一般修饰全局变量,编译器尽量将其分配到寄存器中,读写效率会很高,但是寄存器资源有限,不能所有变量

       都放到寄存里。

 

extern        

       如果跨文件使用全局变量,就必须在本文件中用extern修饰再声明才能在本文件中使用。

 

volatile       

       volatile 的作用 是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。

       参阅大牛的volatile详解。

 

restrict

      关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指   针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。

      详细内容参阅大牛的restrict详解

 

static

      static修饰变量有两方面用法:

      一、修饰局部变量,形成静态局部变量,改变其存储类

      二、修饰函数和全局变量,形成静态全局变量,改变其链接属性

   链接属性:

      一、外部链接属性:

           关联多个编译后的C文件(跨文件),如全局变量 普通函数属于外链接。

      二、内链接:

           关联单个文件内的数据、函数等,static修饰的函数 static修饰的全局变量属于内连接

      三、无连接

           不参与链接,局部变量 static修饰的静态局部变量

你可能感兴趣的:(C语言)