static的简单介绍
来源:互联网 发布:岂取之易守之难乎翻译 编辑:程序博客网 时间:2024/05/18 18:15
static静态全局变量与普通全局变量的区别
存储方式:静态全局变量和普通全局变量都存储在静态存储区,属于静态存储方式。该区域中的数据在整个程序运行中一直占据内存空间。(属于静态存储方式的数据不一定是静态变量)
作用域:非静态全局变量作用域是整个源程序,在各个原文件中都有效。而静态全局变量只在定义该变量的源程序内有效。
再次,可以理解为,将全局变量改为静态变量是改变了他的存储方式,及改变了他的生存期。
static静态局部变量
它定义在函数的内部,只能在定义它的函数内部使用,不管函数是否被调用,他都一直存在,不随函数的结束而消失,并且再次调用时保持前次被调用留下的值。
如果函数体内定义静态局部变量时进行了初始化,以后程序不在进行初始化。
例如:
void fun(int a[10])
{
for (int i = 0; i < 9;i++)
{
static int b = a[i];
b+=10;
printf("%3d", b);
}
}
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
fun(a);
}
结果是11 21 31 41 51 61 71 81 91
当多次调用一个函数并且要求在调用之间保留某些变量的值时,可采用静态局部变量.
静态局部变量放在全局存储区,而不是像普通局部变量一样放在堆栈区。
注意:静态局部变量占用内存时间比较长,并且可读性差。
存储方式:静态全局变量和普通全局变量都存储在静态存储区,属于静态存储方式。该区域中的数据在整个程序运行中一直占据内存空间。(属于静态存储方式的数据不一定是静态变量)
作用域:非静态全局变量作用域是整个源程序,在各个原文件中都有效。而静态全局变量只在定义该变量的源程序内有效。
再次,可以理解为,将全局变量改为静态变量是改变了他的存储方式,及改变了他的生存期。
static静态局部变量
它定义在函数的内部,只能在定义它的函数内部使用,不管函数是否被调用,他都一直存在,不随函数的结束而消失,并且再次调用时保持前次被调用留下的值。
如果函数体内定义静态局部变量时进行了初始化,以后程序不在进行初始化。
例如:
void fun(int a[10])
{
for (int i = 0; i < 9;i++)
{
static int b = a[i];
b+=10;
printf("%3d", b);
}
}
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
fun(a);
}
结果是11 21 31 41 51 61 71 81 91
当多次调用一个函数并且要求在调用之间保留某些变量的值时,可采用静态局部变量.
静态局部变量放在全局存储区,而不是像普通局部变量一样放在堆栈区。
注意:静态局部变量占用内存时间比较长,并且可读性差。
阅读全文
0 0
- static的简单介绍
- static的简单理解
- static的简单用法
- Static的简单总结
- 修饰符static和final简单介绍
- Java的Static使用介绍
- JAVA static 的相关介绍
- java中的static的介绍。
- 简单介绍C语言中auto,register,static,const,volatile,extern等几个关键字的作用
- static介绍
- JAVA中的关键字static的介绍
- c++类的static成员介绍
- [置顶]java类中的static成员变量和static方法简单介绍,持续补充
- java中关于static的简单理解
- Java中static的简单总结
- 关于static与堆栈的简单理解
- Java基础---------Static的简单总结
- Java中static的简单解析
- vue2.5 与 typescript 不知不说的那些事
- Python装饰器
- 日常累积
- centos7安装adobe解决网易云课堂视频的无法观看问题
- Windows平台下MongoDB安装配置
- static的简单介绍
- 资源管理器看不到WNetAddConnection2A映射的磁盘
- 字符设备驱动
- python 音频库 librosa
- Re-ID: Reidentification by Relative Distance Comparison 论文解析
- java个人总结1.0
- Ubuntu&Windows双系统
- ElasticSearch核心基础之索引管理
- C 练习实例21-30