3.3 全局变量和局部变量
来源:互联网 发布:最优化理论与方法 编辑:程序博客网 时间:2024/06/06 16:51
程序中的变量由于定义的位置不同,在程序中的可见程度是不一样的。所谓“可见”,指的是定义的这个变量可以被使用。
操作系统为一个C++程序的运行所分配的内存分为四个区域,如下图所示:
图 程序运行时内存空间的分配
举例:【例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;
}
举例:【例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;
}
0 0
- 3.3 全局变量和局部变量
- 局部变量和全局变量
- 局部变量和全局变量
- 全局变量和局部变量
- 局部变量和全局变量
- 全局变量和局部变量
- 局部变量和全局变量
- 全局变量和局部变量
- 全局变量和局部变量
- 局部变量和全局变量
- 全局变量和局部变量
- 全局变量和局部变量
- 全局变量和局部变量
- 全局变量和局部变量
- 局部变量和全局变量
- 全局变量和局部变量
- 全局变量和局部变量
- 局部变量和全局变量
- 克服时间这个魔鬼
- 3.1 函数的定义与调用
- 为iPhone6设计自适应布局(纯代码实现)
- 3.2 参数传递、返回值及函数声明
- 职场感悟
- 3.3 全局变量和局部变量
- 使用Entify Framework 6.x的事务操作
- 3.4 函数调用机制
- Java 完成部分水吧点饮品系统的:点饮品,饮品管理片段的实现
- IOS加密方式
- list的三个实现类的区别
- 压链栈与进链队列和创建线性表的关系
- WIN10 SSD也卡机?修改注册表关闭MSI Mode
- hadoop MapReduce运行机制