外部变量

  1. 外部变量也就是全局变量,是在所有函数(包括主函数 main)之外定义的变量。
  2. 在单文件程序中,全局变量的作用域是所在源程序文件。
  3. 在多文件程序中,如果希望全局变量的作用域仍只限于所在源程序文件,而不能被其他源程序文件引用,则称为静态全局变量,在定义静态全局变量时须加上关键字static;
  4. 如果希望将全局变量的作用域扩展到其他源程序文件,则称为外部变量,

    如果文件A要引用文件B中定义的外部变量,则在文件A中用关键字extern声明该外部变量,即可将该外部变量的作用域扩展到文件A中。

extern int count; //声明外部变量count
extern int data[ ]; //声明外部数组data,无须指明数组长度


关键字extern提示编译程序变量count是在其他源程序文件中定义的,因此不需要为变量count分配存储空间,只是该源程序可以访问变量count。
由于外部变量声明不进行内存分配,因此,声明外部数组无须指明数组长度。


例子:利用外部变量求两个一维数组元素的累加和。

想法:设全局变量sum保存数组元素的累加和,则两个数组的元素之和要累加到同一个变量sum上,可以将程序分解为1个头文件和2个源程序文件,头文件func.h中存放求和函数Sum的函数原型,源程序文件sum.cpp完成函数Sum的定义,在源程序文件sum.cpp中要引用源程序文件func.cpp中定义的全局变量sum ,因此,需要声明该外部变量,程序如下:

/* func.h */    自定义头文件 
void Sum(int r[ ], int n); 

/* sum.cpp */   源程序文件 
extern int sum;  // 定义外部变量
void Sum(int r[ ], int n)
{
for (int i = 0; i < n; i++)
sum = sum + r[i];
return;
}

主函数执行源程序文件
#include <stdio.h>
#include "func.h"
int sum = 0;

int main( )
{
int a[5] = {1, 2, 3, 4, 5};
int b[10] = {1, 1, 1, 1, 1, 2, 2, 2, 2, 2};
Sum(a, 5);
Sum(b, 10);
printf("数组元素的累加和是:%d\n", sum);
return 0;
}

猜你喜欢

转载自www.cnblogs.com/hello-dummy/p/9164598.html