21天学通C语言
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2.3 使用extern声明变量

从3.2.2节的讨论知道,变量使用之前必须要先定义变量。一般情况下,都会在变量定义语句之后才使用变量,若一定要在变量定义语句之前使用变量,也必须借助关键字extern来声明变量。使用extern声明变量的形式如下。

        extern数据类型名 变量名;

extern语句的作用是,告诉语句该变量是在该程序的其他程序块完成定义的。下面是几个使用extern声明变量的例子:

        extern int key;
        extern double score;
        extern char ppt;

上述语句声明了key为int型变量,score为double型变量,ppt为char型变量。程序运行中使用变量名访问变量内存时,会先根据它的声明来查找相应的定义语句。由于变量名是唯一的,因此,只需变量名即可查找到其定义。所以C语言也接受缺少数据类型名的extern声明语句,例如:

        extern key;
        extern score;
        extern ppt;

但是这是不好的使用习惯。使用extern语句声明变量时,一定要写上数据类型。缺少数据类型的做法会使看程序的人无法马上获得变量的数据类型信息,降低了程序的可读性。

警告:使用extern语句声明变量时,要写上数据类型。

【范例3-4】使用extern语句声明变量,实现方法如示例代码3-4所示。

示例代码3-4

        01  #include <stdio.h>
        02
        03  int main(void) {
        04       extern int data;                   /* 声明一个变量data */
        05       printf("data = %d\n", data);       /* 输出data的值 */
        06
        07       return 0;
        08  }
        09
        10  int data = 23;                          /* 定义变量data */

【运行结果】程序运行后,得到结果如图3-4所示。

图3-4 extern变量的输出结果

【代码解析】由于变量data的定义语句在第10行,而第5行便使用了data变量。因此,在第5行语句之前需要使用extern语句声明变量,如第4行所示。