C++外部变量

 

上一节有读者咨询extern是什么,这节主要用来解释一下extern在C++中的用法,外部变量在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。

 

在此作用域内,全局变量可以为本文件中各个函数所引用。编译时将全局变量分配在静态存储区,有时需要用extern来声明全局变量,以扩展全局变量的作用域。

C++文件内声明全局变量 如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字extern,对该变量作外部变量声明,表示该变量是一个将在下面定义的全局变量。有了声明,就可以合乎规则地引用该全局变量,这种声明称为提前引用声明。C++多文件程序声明外部变量如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量,不能分别在两个文件中各自定义一个外部变量。正确的做法是:在任一文件中定义外部变量,而在另一文件中用extern对该变量作外部变量声明。用extern扩展全局变量的作用域,虽然能为C++编码带来方便,但应十分慎重,因为在执行一个文件中的函数时,可能会改变了该全局变量的值,从而会影响到另一文件中的函数执行结果。经典案例:C++实现用extern对外部变量作引用声明。源码分析:#include<iostream>//头文件
using namespace std;//命名空间
int Max(int num1,int num2);//函数声明
int num1=10,num2=5;//定义全局变量
int main() //主函数
{
  extern int num1,num2;//对全局变量num1,num2做引用声明
  cout<<"较大的值是:"<<Max(num1,num2)<<endl;
}
int Max(int num1,int num2)//自定义求两个数中的较大值
{
  int temp;//定义一个中间变量
  if(num1>num2)//判断条件
  {
    temp=num1;
  }
  else
  {
    temp=num2;
  }
  return temp;//函数返回值为temp
}编译后的结果:

较大的值是:10

--------------------------------
Process exited after 0.07294 seconds with return value 0
请按任意键继续. . .