C语言如何声明外部变量?

一、问题

        由于C语⾔允许将⼀个较⼤的程序分成若⼲独⽴模块⽂件分别编译,如果⼀个源⽂件中的函数想引⽤其他源⽂件中的变量,那么就要想到如何声明外部变量。

二、解答

        外部变量可以⽤ extern 来声明。这就是说,extern 变量可以扩展外部变量的作⽤域。

1、在多⽂件的程序中声明外部变量

        定义时缺省 static 关键字的外部变量,就是⾮静态外部变量。其他源⽂件中的函数引⽤⾮静态外部变量时,需要在引⽤函数所在的源⽂件中进⾏声明。其语法格式如下。

extern 数据类型 外部变量表;

注意:

        在函数内的 extern 变量声明,表⽰引⽤本源⽂件中的外部变量,⽽函数外(通常在⽂件开头)的 extern 变量声明,表示引⽤其他⽂件中的外部变量。

例如,有⼀个源程序由源⽂件 filel.C 和 file2.C 组成。

filel.C

int x,y;    /*外部变量定义*/
char z;    /*外部变量定义*/
int main()
{
    ...
}

file2.C

extern int x,y;    /*外部变量声明*/
extern char z;    /*外部变量声明*/ 
func (int a,b)
{
    ...
}

        在filel.C 和 file2.C 两个⽂件中都要使⽤ x、y、z  3个变量。在 filel.C ⽂件中,把 x、y、z 都定义为外部变量;

        在 file2.C ⽂件中,⽤ extem 把 3 个变量声明为外部变量,表示这些变量已在其他⽂件中定义,并且这些变量的类型和变量名,编译系统将不再为它们分配内存空间。

        对构造类型的外部变量(如数组等),可以在声明时进⾏初始化赋值;若不赋初值,则系统⾃动定义其初值为 0 。

2、在⼀个⽂件内声明外部变量

        如果外部变量不在⽂件的开头定义,其有效的作⽤范围只限于定义处到⽂件结束处。 此时如果想在定义该变量的位置之前调⽤此变量,则应该在调⽤之前⽤关键字 extern 对该变量进⾏“外部变量声明”。

        在下⾯的示例程序中,将⽤ extern 声明外部变量,并将声明的外部变量值输出。代码如下。

#include <stdio.h>
int main()
{
    extern int X, Y;
    printf("The is an example!\n");
    printf("The extern variable is %d,%d\n", X, Y);
}
int X = 96, Y = 88;

程序运⾏结果如下:

The is an example!
The extern variable is 96,88

三、总结

        定义外部变量时,要注意控制的就是它的使⽤范围,这⼀点很重要。

相关推荐

  1. C语言如何声明外部变量

    2024-04-06 11:50:03       15 阅读
  2. C语言如何限定外部变量的使⽤范围?

    2024-04-06 11:50:03       16 阅读
  3. C语言中各变量声明及注意事项

    2024-04-06 11:50:03       32 阅读
  4. C语言K&R圣经笔记 4.3 外部变量

    2024-04-06 11:50:03       24 阅读
  5. C语言 数组声明

    2024-04-06 11:50:03       14 阅读
  6. C语言中的extern:全局变量和函数的声明与使用

    2024-04-06 11:50:03       36 阅读
  7. 如何在PHP中声明一个变量

    2024-04-06 11:50:03       41 阅读
  8. C++ 变量声明和初始化方式

    2024-04-06 11:50:03       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-06 11:50:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-06 11:50:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-06 11:50:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-06 11:50:03       18 阅读

热门阅读

  1. 【Python BUG】anaconda安装报错Error:Cannot unpack file

    2024-04-06 11:50:03       13 阅读
  2. 机器学习的特征选择方法

    2024-04-06 11:50:03       11 阅读
  3. &&和&的区别

    2024-04-06 11:50:03       14 阅读
  4. Redis 事务介绍

    2024-04-06 11:50:03       15 阅读