全局变量和静态变量区别
来源:互联网 发布:淘宝店铺如何添加商品 编辑:程序博客网 时间:2024/05/16 17:21
全局变量基本上在程序的任何地方都能被看到
而静态局部变量只能在其指定的范围内被使用
比如
int i ; // 全局变量
class C
{
public:
static int i_C; // 静态局部变量
}
void main()
{
i = 1; // 合法
i_C = 1; // 错误
C::i_C = 1; // 合法
C cc;
cc.i_C = 2; // 合法
}
全局变量具有外部连接性,即同一工程中其它文件中的也可引用。
而静态变量不具有外部连接性,即同一工程中其它文件中不可以引用。
如:
//cpp1.cpp
extern int x=10;
static int y=5;
//cpp2.cpp
#include <iostream.h>
void main()
{
extern int x;
extern int y;
cout < <x < <endl;
cout < <y < <endl;
}
将这两个文件放在同一工程中,你发现每一文件单独编译能通过,但作为工程不能构成.exe文件运行。若将有关变量y的行注释后(或将static换成extern)就可以了。这是因为静态变量的作用域在本文件内,不能扩充到其它文件。其作用是当多人合作开发一个工程时,仅在自己的文件内使用的全局变量用静态变量不会与其他人用的变量相混淆,这就是标识符的一致性。
变量可以分为全局变量、静态全局变量、静态局部变量和局部变量
按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区
按作用域分:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。
代码如下:
//test.cpp
#include <iostream.h>
extern int a;//变量声明,不是定义
static int b=5;
void func1()
{
cout < <b < <endl < <a < <endl;//结果为5
}
//main.cpp
int a;
int b=10;
void func2()
{
static int i;
i++;
cout < <i < <endl;
}
void func1();
void main()
{
a=20;
func1();
func2();
func2();
}
输出结果为
5
20
1
2
- 全局变量和静态变量区别
- 全局变量和静态变量区别
- 全局变量和静态变量的区别
- 静态变量和全局变量的区别
- 全局变量和静态[全局]变量的区别
- 静态变量和全局变量的区别
- 全局变量和静态变量的区别
- 静态变量和全局变量的区别
- 静态变量和全局变量的区别
- 全局变量和全局静态变量的区别
- 静态变量和全局变量的区别
- PHP静态变量和全局变量的区别
- 静态局部变量和全局变量的区别!
- 全局变量、局部变量、静态变量和实例变量的区别
- 全局变量、局部变量、静态变量和实例变量的区别
- 全局变量,局部变量,静态变量和实例变量的区别
- [zt] 全局变量、静态全局变量、静态局部变量和局部变量,寄存器变量的区别
- 局部变量、全局变量和静态变量的含义和区别
- oracle11g自动内存管理
- 初始化屏幕宽高参数的两种写法
- ubuntu设置保护一下眼睛
- 第十六周实验报告2
- Android风格与主题(style and theme)
- 全局变量和静态变量区别
- PPM / PGM / PBM 图像文件格式
- 文件和目录
- Oracle forall用法简介
- poj1458(Common Subsequence)
- ssize_t
- 网站建设 html css javascript教程
- JAVA MVC
- 函数cin.get、 cin.getline 、getline、 gets