3.3 全局变量和局部变量
2016-06-12 08:53
253 查看
程序中的变量由于定义的位置不同,在程序中的可见程度是不一样的。所谓“可见”,指的是定义的这个变量可以被使用。
要了解程序中使用变量的属性,必须先了解变量的存储机制。
操作系统为一个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;
}
一.变量的存储机制与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;
}
相关文章推荐
- 浅谈JavaScript变量的自动转换和语句
- php中heredoc与nowdoc的使用方法
- 3.2 参数传递、返回值及函数声明
- iOS访问https ssl和tls双向加密
- GEEK编程练习— —反转整数
- 3.1 函数的定义与调用
- 正确的 Composer 扩展包安装方法
- 2.14 文件操作
- PhpMyAdmin 配置文件现在需要一个短语密码的解决方法
- 2.13 枚举类型
- vs2013使用C#6.0
- 基于viewpager的广告滑动效果
- Bootstrap图片
- Tomcat下使用虚拟主机将项目部署成顶级域名
- vim的vimrc设置
- 浅谈jquery点击label触发2次的问题
- [李景山php]每天laravel-20160826|EncryptionServiceProvider
- Ubuntu14.04安装和配置Tomcat8.0.12(转)
- asp.net如何定时执行任务
- 2.12 常用算法的应用实例