点击上方“C语言入门到精通”,选择置顶
第一时间关注程序猿身边的故事
作者
闫小林
白天搬砖,晚上做梦。我有故事,你有酒么?
C++外部变量
上一节有读者咨询extern是什么,这节主要用来解释一下extern在C++中的用法,外部变量在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。
在此作用域内,全局变量可以为本文件中各个函数所引用。编译时将全局变量分配在静态存储区,有时需要用extern来声明全局变量,以扩展全局变量的作用域。
C++文件内声明全局变量 如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。 如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字extern,对该变量作外部变量声明,表示该变量是一个将在下面定义的全局变量。 有了声明,就可以合乎规则地引用该全局变量,这种声明称为提前引用声明。 C++多文件程序声明外部变量 如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量,不能分别在两个文件中各自定义一个外部变量。 正确的做法是:在任一文件中定义外部变量,而在另一文件中用extern对该变量作外部变量声明。 用extern扩展全局变量的作用域,虽然能为C++编码带来方便,但应十分慎重,因为在执行一个文件中的函数时,可能会改变了该全局变量的值,从而会影响到另一文件中的函数执行结果。 经典案例:C++实现用extern对外部变量作引用声明。 源码分析:#include//头文件 using namespace std;//命名空间 int Max(int num1,int num2);//函数声明 int num1=10,num2=5;//定义全局变量 int main() //主函数 {extern int num1,num2;//对全局变量num1,num2做引用声明cout<<"较大的值是:"<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
请按任意键继续. . .
![451846e3c3ef431a083d0888eceaaa13.png](https://i-blog.csdnimg.cn/blog_migrate/894f4f35962c7d419891afd21ba5c803.png)