目录
前言
介绍C语言里static和extern的基本用法。
一、extern
(1)extern关键字的作用:
用来声明变量、函数作为外部变量、外部函数供其他文件使用。
(2)在一个文件引用另一个文件中定义的全局变量(或者函数):
只在头文件中通过extern给出全局变量的声明(即extern int a; 而不要写成extern int a = 1;)
并在源文件中给出定义(并且只能定义一次),如果在两个文件中都定义名字相同的变量, 会在连接时出现重复定义的错误。
二、static
(1)隐藏与隔离(限制作用域):当我们同时编译多个文件时,所有加static前缀的全局变量和函数都只能在本文件中访问,不能在其它文件中访问。
(2)延长生存周期:有时我们希望函数中局部变量的值在函数调用结束之后不会消失,而仍然保留其原值。即它所占用的存储单元不释放,在下一次调用该函数时,其局部变量的值仍然存在,也就是上一次函数调用结束时的值。
(3)存储方式:全局变量本身就是静态,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。
(4)static变量可以默认初始化为0。
总结
static函数与普通函数有什么区别?
(1)其他文件中可以定义相同名字的static函数,不会发生冲突。
(2)静态函数不能被其他文件所用。
只在当前源文件中使用的函数应声明为static函数,static函数应该在当前源文件中说明和定义。
对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。