为什么要说static妙,它确实是妙,在软件开发或者单片机开发过程中,大家总以为static就是一个静态变量。在变量类型的前面加上就自己主动清0了。还有就是加上statickeyword的,无论是变量还是keyword,在局部变量中,变量仅限于局部可见。在全局区中,static变量或函数仅限于本文件可见,当然另一个重要的特性被忽略了。。。

就是static修饰的局部变量 它的数值 是上一次函数调用结束之后的数值。正是由于有了这个特性,我们就能够利用zh这个特性完毕非常多功能。精简总结一下static的特性:

keyword  static
        能够修饰 函数 能够修饰 变量
         它所修饰的内容为静态
   static修饰的局部变量为 静态局部变量
         特点:
         1、生命周期 整个程序 
         2、訪问范围 和普通变量是一样的
         3、static修饰的局部变量 它的数值 是上一次函数调用结束之后的数值
         4、static还能够 修饰 全局变量 或者函数
               静态局部变量 在定义的时候没有初始化  系统会给定 0为默认的初始值
         5、假设涉及到多文件操作的时候  用static修饰的全局变量   这个全局 变量仅仅能是在本文件里使用 
              static修饰函数的时候 一样 表示限定使用范围 之恩可以是在本文件里使用
 6、普通的 局部 变量是在栈上面分配 空间的   是系统分配以及 负责释放回收的 
              全局变量 静态局部变量实际上是在  静态区 上分配空间

我们写个程序验证一下:(仅验证第3个功能)

#include<stdio.h>void fun();
int main()
{fun();fun();return 0;
}void fun()
{static int a = 0;a++ ; printf("a:%d\n",a);
}

运行结果:

从运行结果看到。fun()函数在main函数中调用了两次,第一次调用的时候a自加。打印的结果为1

第二次调用fun()函数的时候,a事实上就不为0了,而是为1,因此自加,a就变成了2。

转载于:https://www.cnblogs.com/jzssuanfa/p/7064334.html

C语言keywordstatic的绝妙用途相关推荐

  1. J语言初步,绝妙的符号系统,神的计算器

    文章目录 简介 算术符号和优先级 赋值和比较 复合动词 动词列表 理解阶乘!! 简介 J语言更像是一个大型符号系统,用以解决复杂的数学运算.所以在下载J语言之后,进入jconsole,就可以凭借感觉进 ...

  2. go 语言 优势及 主要用途

    1.Go有什么优势可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了. 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大 ...

  3. C语言在开发中的应用博文汇总贴

    自己成长的同时也不要忘记带动别人一起成长,前人种树,后人乘凉,我宁愿做种树人,让读者乘凉. 以下有些文章时间比较长了,这里只做汇总,随着个人能力的提升,不可否认有些文章中描述的有不正确或者不恰当的地方 ...

  4. 第1节:C语言发展及基本格式步骤

    一  C语言发展 1:1970年美国贝尔实验室的Ken Thompson以BCPL(Basic Combined Programming Language)语言为基础,设计出了很简单且很接近硬件的B语 ...

  5. 脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua

    今天一直在研究脚本语言语言之类的问题,上午正好有机会和大家共享一下. 脚本语言:Shell , JavaScript.VBScript.Perl.PHP.Python.Ruby.Lua 工作控制语言和 ...

  6. 《C champion》 为什么要学习C语言

    C语言作为编程语言的元老,在很多领域都拥有着无可替代的地位,尤其是在工业领域,基本上所有跟硬件有关的的编程都需要用到C语言,在过去的20多年中,其他的编程语言发展迅速,尤其是Java,python等等 ...

  7. c语言结构体的位操作,C语言之路---结构体、位运算及预处理命令

    一.结构体 1).概念 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member). 结构体也是一种数据类型,它由程序员自己定 ...

  8. c++ new一个结构体_C语言结构体,又一个纸老虎,纯干货讲解(附代码)

    来源:网络,排版整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy)结构体的定义结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构.结构体和其他类型基础数 ...

  9. 谭浩强c语言规范化的指数形式,C语言程序设计谭浩强第四期末复习重点.docx

    1. 1.问题分析2.设计算法3.编写程序4.对源程序进行编辑.编译和连接5.运行程序,分析结 6.编写程序文档 第一章程 序 设 计 和C 语 言 1.1.什么是计算机程序 程序:一组计算机能识别和 ...

最新文章

  1. c# 调用restful json_微服务调用为啥用RPC框架,http不更简单吗?
  2. koa mysql 存储过程_Sql中判断数据库、表、临时表、存储过程和列是否存在...
  3. 蓄电池维护中的几大误区
  4. python实现一个字典
  5. 2层,3层,4层交换机的区别与特点!!
  6. Cloud for Customer Silverlight UI部分源代码
  7. 8s存储最佳方案_MaxiDi, 意大利:自动化物流解决方案
  8. 用冒泡法对10个整数从小到大排序
  9. 信息奥赛一本通(1310:【例2.2】车厢重组)
  10. 翻译:如何理解梯度下降算法Gradient Descent algorithm
  11. 换ip 电脑ip切换 ip修改 支持xp win7 win10
  12. win7计算机管理快捷键,win7系统中的常用快捷键
  13. 昆腾通过集成新的LTO-8磁带扩大在存储效率领域的领导地位
  14. Windows10版本一键转换工具
  15. Validation failed判断错误
  16. Android NDK不得不说的秘密
  17. 【读过的书】《好看的皮囊千篇一律,有趣的灵魂万里挑一》
  18. Msc.Marc模拟平板圆孔处应力集中:二维轴对称线弹性分析
  19. 高通发布骁龙 695、778G+、480+、680 4G 四款芯片
  20. Mockito verify Junit5集成 Mockito

热门文章

  1. asp.net mvc3 利用Ajax实现局部刷新
  2. EM算法极其推广---EM算法的收敛性
  3. mpvue中使用小程序云开发总结
  4. 浅淡 RxJS WebSocket
  5. HBase 数据迁移
  6. 腾讯云服务器配置ftp~
  7. ASP.NET Core 源码阅读笔记(1) ---Microsoft.Extensions.DependencyInjection
  8. 千里之行始于足下---在“从普通走向优秀”的路上
  9. 可变化的鸿蒙武器,DNF2018史诗改版大全 武器套装改版属性介绍
  10. ArcGIS 10.2.2利用Anaconda集成scipy和pandas