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的理解相关推荐

  1. 静态变量static(C)

    static static是C语言关键字之一. static 数据类型用来给变量创建永久存储空间.静态变量在函数间调用时保持他们的值不变. 它的语法结构为: static c_type data_na ...

  2. 静态变量(static variable)

    静态变量(static variable) 我们可以创建具有 块作用域.无链接.静态存储期 的局部静态变量.其与局部自动变量一样,具有相同的作用域,但是程序在离开它们所在函数后,静态变量不会消失,在多 ...

  3. java 静态全局变量_静态变量static和全局变量global

    静态变量static , 全局变量global 静态变量 在java也叫类变量从名字可以看出它是属于某个类的而不是类的实例.它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存, ...

  4. Systemverilog 静态变量 (static) 与 动态变量(automatic) 区别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 静态变量 Static 动态变量 Automatic 一.静态变量和动态变量的定义 二.静态变量与动态变量应用举例 总结 静 ...

  5. C语言静态变量static的分析

    对C语言静态变量static分析,解释了static为什么在局部变量里面定义的时候不会随着函数执行完毕而销毁,也稍微用解释了静态存储区和动态存储区的小知识 文章目录 学习static前要先认识 sta ...

  6. c++ 类中静态变量 static

    类中的静态变量 由于声明为static的变量只被初始化一次,因为它们在单独的静态存储中分配了空间,因此类中的静态变量由对象共享.对于不同的对象,不能有相同静态变量的多个副本.也是因为这个原因,静态变量 ...

  7. @value 静态变量_你理解 PHP 中的静态方法吗?

    它仍然是一个有争议的话题.让我们尝试了解原因. 函数中的静态变量 您可能已经看过以下代码: function testStatic() {static $x = 0;$x++;return $x; } ...

  8. php的静态变量static在函数内部

    静态变量放在函数内 <?phpheader('content-type:text/html;charset=utf-8');function fun(){static $num=1;$num++ ...

  9. 搞懂静态变量static

    文章目录 1.什么是static? 2.static关键字的作用是什么? 3.静态变量和非静态变量的区别? 4.static可以修饰局部变量吗? 5.可以通过this访问静态变量吗? 6.静态方法能否 ...

最新文章

  1. 2位华人获得加州理工学院计算机、数学博士奖学金,3年近一半由华人获得
  2. ASP.NET数据绑定技术
  3. 详解Vue.use使用与原理
  4. mysql建立作业_mysql创建作业及问题解决
  5. 只会用console.log调试?快来试试这些高效的调试方法
  6. Filter的基本配置
  7. SAP MM 采购单据中的’Origin Accept’选项会影响Inbound Delivery创建操作方式
  8. Mac平台的MySQL管理工具
  9. unity3D人物模型
  10. win10 加域电脑设置指纹识别
  11. 网站被攻击了,怎么办?
  12. FANUC机器人奇异点的解决方法
  13. uniapp中输入框禁用表情与特殊符号
  14. mysql集群方案参考
  15. 【深度学习框架输入格式】NCHW还是NHWC?
  16. 中兴核心网服务器笔记本电脑,基于统一硬件平台的中兴通讯核心网技术介绍
  17. linux firefox 背景色,火狐Firefox 72浏览器滚动条将自适应网页背景色
  18. Selenium+Python3之:多线程进行跨浏览器测试
  19. 马士兵 java 学习笔记_马士兵java教程笔记1
  20. 《啊哈算法》第四章 万能的搜索

热门文章

  1. 第8课 如何使用开发环境命令行注册EOS靓号?
  2. 销售额超过公司均值的优秀经销商?SQL比例问题之分组比较的四种解法
  3. Mybatis基础实现——增,删,改,查
  4. C# TreeView
  5. treeview 的show属性
  6. Django:Filters(过滤器)
  7. 《msdn开发精选》“高性能Web开发技术”网上聊天活动
  8. 攻防世界_level2
  9. 时间划过的伤痕叫成长
  10. 全志H3、H8方案机顶盒通刷教程