c语言的static和extern关键字

来源:互联网 发布:java基础面试 编辑:程序博客网 时间:2024/04/30 06:00
在c语言中经常会使用static(静态的)和extern(外部的)关键字,但是如果使用不当可能会对程序的设计带来麻烦,这里作些介绍。

一、声明或定义变量

    1、局部变量:

         用static在函数内部定义的变量是静态局部变量,存储在内存的静态/全局区,其生命周期是整个源程序。但是作用域与自动变量相同,只能在该函数中使用,退出函数后,此变量继续存在,但不可使用。若不给静态局部变量赋值,则系统自动赋值0(自动变量初值随即)。

    2、全局变量

        全局变量默认的是extern型的,如果定义时加static则为静态全局变量。如果不给全局变量赋初值,一般系统会自动赋值0。

      (1) extern全局变量,可以被其它源文件中的函数调用,但是在调用它的文件中必须用extern再次声明此变量,或者是直接把此全局变量放在头文件中,在需要调用它的文件中包含此头文件。

      (2)static全局变量,生命周期是整个源程序,存放在静态/全局区,但只能在其所在的源文件中被使用。

二、声明或定义函数

     1、static(静态)函数

      静态函数的生命周期也是整个源程序,但作用域也是其所在的源文件。

     2、extern型函数

     函数默认的是extern型的,其它文件中需要调用extern型的函数时,需要在使用前用extern再声明一下此函数,或者包含声明过此函数的头文件。在.c文件中声明外部函数时必须使用extern关键字,而在头文件中extern关键字可有可无,只要在某个.c文件中实现了就行。

     编程时,把需要在其它文件中使用的全局变量和函数在其头文件中声明,使用时包含此头文件,尽量不要在头文件中定义变量和函数。

     
原创粉丝点击