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

就是static修饰的局部变量 它的数值 是上一次函数调用结束之后的数值。正是因为有了这个特性,我们就可以利用zh这个特性完成很多功能。精简总结一下static的特性:

关键字  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。

最新文章

  1. Neutron 理解 (9): OpenStack 是如何实现 Neutron 网络 和 Nova虚机 防火墙的 [How Nova Implements Security Group and How Neutron Implements Virtual Firewall]
  2. 二:Go编程语言规范-类型
  3. ASP.NET XmlSerializer权限问题
  4. WPF元素可视化效果
  5. JMeter学习-004-WEB脚本入门实战
  6. Hession矩阵与牛顿迭代法
  7. 定时组件quartz系列&lt;三&gt;quartz调度机制调研及源码分析
  8. 【LeetCode】6 - ZigZag Conversion
  9. OpenJudge/Poj 1458 Common Subsequence
  10. wifi智能插座 一键扫描局域网内插座Ip及其它信息 Python源代码API
  11. 足球和oracle列(4):巴西惨败于德国,认为,差额RAC拓扑控制!
  12. ASP.NET Core 源码学习之 Options[2]:IOptions
  13. Logstash&amp;Redis&amp;Elasticsearch&amp;Kibana
  14. rabbitmq 启动报错
  15. C# Linq基本常用用法
  16. 8.Layout布局应用
  17. ubuntu升级pip后, ImportError: cannot import name ‘main‘
  18. elasticSearch6源码分析(8)RepositoriesModule模块
  19. Java并发编程的艺术(十)——线程池(1)
  20. weiwo.wxmmd.com将您重定向的次数过多。尝试清除 Cookie.

热门文章

  1. Java进阶(四十五)java 字节流与字符流的区别
  2. memcached实战系列(七)理解Memcached的数据过期方式、新建过程、查找过程
  3. iOS开发之Xcode常用调试(Debug)技巧总结
  4. jvm库对nio的处理
  5. android程序崩溃后重启
  6. SQL Server2012 AlwaysOn 无法将数据库联接到可用性组 针对主副本的连接未处于活动状态
  7. TortoiseSVN服务器ip地址修改后如何使用
  8. C++中友元详解
  9. Android优化之ArrayMap
  10. 【一天一道LeetCode】#141. Linked List Cycle