您的位置:首页 > 其它

3.3 全局变量和局部变量

2016-06-12 08:53 253 查看
程序中的变量由于定义的位置不同,在程序中的可见程度是不一样的。所谓“可见”,指的是定义的这个变量可以被使用。


一.变量的存储机制与C++的内存布局

要了解程序中使用变量的属性,必须先了解变量的存储机制。

操作系统为一个C++程序的运行所分配的内存分为四个区域,如下图所示:



图 程序运行时内存空间的分配


二.全局变量

在所有函数之外定义的变量称为“全局变量”。
全局变量在编译时建立在全局数据区,在未给出初始化值时系统自动初始化为0。
全局变量在其所在的程序文件中任何函数中都是可见(可以访问)的。

举例:【例3.5】 多个函数使用全局变量的例子。
#include<iostream>
using namespace std;
int n=100;
void func(){
     n*=2;
}
int main(){
    n*=2;
    cout<<n<<endl;
    func();
    cout<<n<<endl;
    return 0;
}


三.局部变量

定义在函数内或块内的变量称为“局部变量”。
局部变量在程序运行到它所在的块时建立在栈中,该块执行完毕局部变量占有的空间即被释放。
局部变量在定义时可加修饰词auto,但通常省略。局部变量在定义时若未初始化,其值为随机数。
程序中使用的绝大多数变量都是局部变量。

举例:【例3.6】 使用局部变量的例子。(查看动画演示
#include<iostream>
using namespace std;
void fun(){
    auto int t=5;                    // fun()中的局部变量,auto可省略
    cout<<"fun()中的t="<<t<<endl;
}
int main(){
    float t=3.5;                    //main()函数中的局部变量
    cout<<"main()中的t="<<t<<endl;
    fun();
    cout<<"main()中的t="<<t<<endl;
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: