C语言 论static和extern关键字
static关键字
static关键字可以声明静态变量和静态函数,以控制变量和函数的作用范围和生存周期。
使用static关键字修饰的局部变量,称为静态局部变量,静态局部变量与全局变量一样存储在内存中的全局静态区。静态局部变量具有如下特点:
(1)静态局部变量只在函数第一次调用时初始化一次并将生命周期延长到整个程序的执行期间。
(2)静态局部变量如果声明时没有初始赋值,系统会自动初始化为零,同全局变量的初始化规则一致。
总结:
使用 static 关键字修饰的全局变量称为静态全局变量。
普通全局变量对整个工程可见,其他文件中,使用extern外部声明后,可以直接使用。
静态全局变量仅对当前文件可见,其他文件不可访问,其他文件中可以定义与其同名的变量,两者互不影响。
静态全局变量对于需要编译多个源代码文件的程序,能够有效地降低源文件之间的耦合,避免不同文件同名变量的冲突。
extern 关键字
是 C 语言中用于声明(而非定义)全局变量或函数的关键字,主要解决多文件编程中变量/函数的跨文件共享问题。它的核心作用是扩展变量或函数的作用域,使其能在不同源文件中被访问。
它只能声明普通全局变量