静态持续性、外部存储性

1.外部变量的声明

外部变量作用域为整个文件,可以在main()前或者头文件中进行声明。
一方面,若要使用外部变量必须在使用它的所有文件中进行声明,另一方面,c++中限制了变量的定义只能进行一次,即单定义规则。所以,若要在多个文件中使用同一个外部变量,必须进行以下声明:

//file1.cpp

extern int i=7;  //定义外部变量i
int j=8;  //定义外部变量j,extern可以省略
main()
{
    ...
}
//file2.cpp

extern int i  ;  // 在file2.cpp中,引用file1.cpp中定义的外部变量 i  ;
extern int j ;  // 在file2.cpp中,引用file1.cpp中定义的外部变量 j ;
    ...

file1.cpp定义外部变量i,j,使得编译器为他们分配内存空间。但是 在file2.cpp中,用extern指示了程序使用另一个文件(file1.cpp)中定义的的变量i,j,程序并不为它们再分配内存空间。

2.外部变量的引用示例

程序中定义了全局变量warming,并且演示了如何声明、使用它们,另外定义了同名的自动变量。

//Main.cpp
#include <iostream>
using namespace std;
extern double warming=0.1;//定义外部变量
void update(double dt);
void local();

int main()
{
    cout<<"Global warming is "<<warming<<" degree.\n";
    update(0.1);
    cout<<"Global warming is "<<warming<<" degree.\n";
    local();
    cout<<"Global warming is "<<warming<<" degree.\n";

    return 0;
} 

//extern.cpp
#include <iostream>
using namespace std;
extern double warming;//引用定义的外部变量warming;
void update(double dt);
void local();

void update(double dt)
{
    warming+=dt;
    cout<<"Updating Global warming to "<<warming<<" degree.\n";
}
void local()
{
    double warming=0.9;
    cout<<"Local warming is "<<warming<<" degree.\n";
    cout<<"But Global warming to "<<::warming<<" degree.\n";//作用域解析运算符
}

输出结果:
这里写图片描述

注意:c++提供了作用域解析运算符(::),放在变量名之前,该运算符表示使用变量的全局版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值