c中的全局变量

Global variable in c

本问题已经有最佳答案,请猛点这里访问。

如果我们在主函数前面的开头声明一个变量,而不给出extern关键字,那么它是一个静态全局变量(只能在该文件中访问)还是可以从其他文件访问它?例如:

1
2
3
4
5
6
#include<stdio.h>
int k;
main()
{

}

变量k在技术上可用于其他文件(模块),但除非其他文件具有extern int k声明,否则它们将不知道该变量,编译时错误将指示另一个文件中的k未知。


外部定义和声明,默认初始化为零。

1
int k;

仅限外部声明,已定义并初始化某些where else

1
extern int k;

外部定义、初始化和声明

1
int k = 2;


1
static int k;

它告诉编译器变量k在文件scocpe中是可访问的,不能在外部访问。

1
extern int k;

它告诉链接器变量k链接到另一个文件中的变量k。

1
int k;

它是全局范围,不能在两个文件中声明两次。