zoukankan      html  css  js  c++  java
  • C语言keywordstatic的绝妙用途

    为什么要说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
    ",a);
    }
    运行结果:

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

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




  • 相关阅读:
    Ubuntu在命令行开启远程桌面
    Qt5编译项目出现GL/gl.h:No such file or directory错误
    硬盘录像机协议与技术汇总
    js判断IP字符串是否正确
    PHP获取原生POST数据
    hdu 5093 二分匹配
    hdu 4435 bfs+贪心
    hdu 4431 绝对值之和最小公式
    hdu 5073 推公式相邻质心转换
    hdu 3657 最小割(牛逼!!!!)总算理解了
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7064334.html
Copyright © 2011-2022 走看看