静态变量static的理解
static
static是C语言关键字之一。
static 数据类型用来给变量创建永久存储空间。静态变量在函数间调用时保持他们的值不变。
它的语法结构为:
static c_type data_name;
其中,c_type 为基础的数据类型,data_name是变量名。
生存期
生存期的概念是在程序执行过程中体现的。程序开始执行后,对所需要的变量申请空间,直至这个变量被销毁。这段时间便是一个变量的生存期。
由于静态变量static在第一次被调用时被创建,当主函数被销毁时才会被销毁。那么的话,其生存期便会远远的超过创建它的那个函数。这样就达到了对其延寿的作用。
void fun(int x)
{static int a = x;static int b = 0;a++;printf("a= %d \n", a);
}
int main()
{for (int i = 10; i > 0; i--){fun(i);}system("pause");return 0;
}
由于a是静态变量,所以当第一次开辟空间时被赋予了10。那么它在fun函数销毁时并不会被销毁,并且在fun函数被再次调用时不会被创建。所以本程序的输出结果如下所示。
由图可见,静态变量可以自加。
可见性
可见性指的是在编译过程中对于一个变量来说,可以被使用的能力。静态变量的可见性如同普通变量,向下可见。
a = 10;static int a;
输入以上程序,编译器会提醒你未定义标识符a。
原理
当函数被调用的时候,会在栈区申请一段内存,来存放函数内的变量。当函数调用结束时,这段内存便会被释放。而静态变量static申请的内存不在栈区。而在数据区。当函数被销毁时,它不会随着函数的销毁而释放,从而实现了其生存期超过了函数本身的功能。
当静态变量static被创建时,在数据区为其分配了一段空间,并且分配了一个标志符,设为1。当经过第一次赋值之后,该标志符被设为0,。从而限制了之后对其的赋值。
静态变量static的理解相关推荐
- 静态变量static(C)
static static是C语言关键字之一. static 数据类型用来给变量创建永久存储空间.静态变量在函数间调用时保持他们的值不变. 它的语法结构为: static c_type data_na ...
- 静态变量(static variable)
静态变量(static variable) 我们可以创建具有 块作用域.无链接.静态存储期 的局部静态变量.其与局部自动变量一样,具有相同的作用域,但是程序在离开它们所在函数后,静态变量不会消失,在多 ...
- java 静态全局变量_静态变量static和全局变量global
静态变量static , 全局变量global 静态变量 在java也叫类变量从名字可以看出它是属于某个类的而不是类的实例.它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存, ...
- Systemverilog 静态变量 (static) 与 动态变量(automatic) 区别
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 静态变量 Static 动态变量 Automatic 一.静态变量和动态变量的定义 二.静态变量与动态变量应用举例 总结 静 ...
- C语言静态变量static的分析
对C语言静态变量static分析,解释了static为什么在局部变量里面定义的时候不会随着函数执行完毕而销毁,也稍微用解释了静态存储区和动态存储区的小知识 文章目录 学习static前要先认识 sta ...
- c++ 类中静态变量 static
类中的静态变量 由于声明为static的变量只被初始化一次,因为它们在单独的静态存储中分配了空间,因此类中的静态变量由对象共享.对于不同的对象,不能有相同静态变量的多个副本.也是因为这个原因,静态变量 ...
- @value 静态变量_你理解 PHP 中的静态方法吗?
它仍然是一个有争议的话题.让我们尝试了解原因. 函数中的静态变量 您可能已经看过以下代码: function testStatic() {static $x = 0;$x++;return $x; } ...
- php的静态变量static在函数内部
静态变量放在函数内 <?phpheader('content-type:text/html;charset=utf-8');function fun(){static $num=1;$num++ ...
- 搞懂静态变量static
文章目录 1.什么是static? 2.static关键字的作用是什么? 3.静态变量和非静态变量的区别? 4.static可以修饰局部变量吗? 5.可以通过this访问静态变量吗? 6.静态方法能否 ...
最新文章
- 2位华人获得加州理工学院计算机、数学博士奖学金,3年近一半由华人获得
- ASP.NET数据绑定技术
- 详解Vue.use使用与原理
- mysql建立作业_mysql创建作业及问题解决
- 只会用console.log调试?快来试试这些高效的调试方法
- Filter的基本配置
- SAP MM 采购单据中的’Origin Accept’选项会影响Inbound Delivery创建操作方式
- Mac平台的MySQL管理工具
- unity3D人物模型
- win10 加域电脑设置指纹识别
- 网站被攻击了,怎么办?
- FANUC机器人奇异点的解决方法
- uniapp中输入框禁用表情与特殊符号
- mysql集群方案参考
- 【深度学习框架输入格式】NCHW还是NHWC?
- 中兴核心网服务器笔记本电脑,基于统一硬件平台的中兴通讯核心网技术介绍
- linux firefox 背景色,火狐Firefox 72浏览器滚动条将自适应网页背景色
- Selenium+Python3之:多线程进行跨浏览器测试
- 马士兵 java 学习笔记_马士兵java教程笔记1
- 《啊哈算法》第四章 万能的搜索