静态变量(static variable)

我们可以创建具有 块作用域、无链接、静态存储期 的局部静态变量。其与局部自动变量一样,具有相同的作用域,但是程序在离开它们所在函数后,静态变量不会消失,在多次函数调用之间会记录它们的值。

#include <stdio.h>void TryStat(void);int main()
{for (int i = 1; i <= 3; i++){printf("Here comes iteration %d:\n", i);TryStat();}return 0;
}void TryStat(void)
{int fade = 1;static int stay = 1;    // 逐步调试程序时,会发现程序跳过了这句声明printf("fade = %d and stay = %d\n", fade++, stay++);
}

该程序的输出如下:

Here comes iteration 1:
fade = 1 and stay = 1
Here comes iteration 2:
fade = 1 and stay = 2
Here comes iteration 3:
fade = 1 and stay = 3

静态变量 stay 保存了它被递增1后的值,但是 fade 变量每次都是1。这表明了初始化的不同:每次调用 TryStat() 都会初始化 fade ,但是 stay 只在编译 TryStat() 时被初始化一次。如果未显式初始化静态变量,它会被初始化为 0。

不能在函数的形参中使用 static :

int wontwork(static int flu);        // 不允许

Tip
逐步调试时,程序之所以会跳过第19行的声明: “static int stay = 1; ”,是因为静态变量和外部变量在程序被载入内存时已加载完毕。把这条声明放在 TryStat(void) 函数中是为了告诉编译器只有 TryStat(void) 函数才能看到该静态变量。这条声明并未在运行时执行。

静态变量(static variable)相关推荐

  1. 静态变量static(C)

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

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

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

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

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

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

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

  5. 静态变量static的理解

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

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

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

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

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

  8. 搞懂静态变量static

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

  9. Java中的类变量(静态变量static的具体用法快速入门))

    文章目录 问题分析 修改过后的代码 运行结果 先看一段代码 package study_static;public class Childgame {public static void main(S ...

最新文章

  1. cloud自动发卡平台cloudfaka_open-cloud基于springcloud、oauth2、nacos打造的微服务开放平台...
  2. 通过PXE网络安装ESXI6
  3. 文本文件 java,java 写文本文件
  4. hdu3724 字典树(商品条形码)
  5. docker 安装mysql 实战文档_在docker上安装运行mysql实例
  6. 需求入门 - 获取需求方法:Nine Boxes
  7. AI理论知识整理(18)-内积与范数
  8. jQuery插件---ImageBox的使用
  9. zabbix JMX监控Tomcat及错误解决方法
  10. 有感而发 - 日新月异的SAP开发技术
  11. 怪哉翻译软件测试,翻译怪哉虫文言文
  12. Linux内核设计的艺术
  13. 计算机管理 如何将c盘,教程:新买的电脑如何把C盘分区成多个盘?
  14. l2-029 特立独行的幸福 (25分)_霜降后盆栽幸福树,调整4个地方,不用再怕掉叶子了...
  15. 中国IT业发展案例剖析之--豪杰解霸
  16. Word2vec 详解
  17. 世界和平 - 中国国际友好城市数据集
  18. Cisco ASA 9.17.1 Full ( bin, ova, qcow2, SPA, vhdx ) 下载 - 思科防火墙
  19. vue+css实现选择框内打勾效果
  20. html5文字游戏引擎,HTML5游戏实战(3): 60行代码实现水平跑酷游戏

热门文章

  1. 【MM32F5270开发板试用】六、如何用 星辰内核 + 国产RTOS 通过I2S播放 “星辰大海”
  2. sql语句查询,多字段like模糊查询优化
  3. 无人驾驶技术的7大典型应用场景
  4. 编程题——合法括号序列
  5. 量子信息与量子计算_我们会看到量子计算革命吗?
  6. 树莓派之常用软件(32位/64位)
  7. 【C#】xml解析对比XDocument和XmlDocument
  8. 前台、中台、后台,业务中台、技术中台、数据中台、算法中台分别是什么?
  9. pytorch快速入门与实战——三、Unet实现
  10. getReader()/getInputStream() has already been called for this request