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
请按任意键继续. . .
更多案例可以go公众号:C语言入门到精通
正文完