C++extern声明的外部变量 | 使用extern输出

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
请按任意键继续. . .

C++使用extern输出

更多案例可以go公众号:C语言入门到精通

正文完