• C语言


    摘要:

      static  (静态),在C语言中主要用法:修饰局部变量 ,修饰函数和全局变量

     一,修饰局部变量
      static修饰局部变量时该变量是存放在被存储在全局存储区里(静态存储区),下次调用的时候仍旧保持原来的值与堆栈变量不同,变量前使用static是告知编译器,此变量仅在变量的作用范围内有效。
      static局部变量初次定义时就要初始化,且只能初始化一次。如果在定义的时候不初始化,编译器就会自动赋值为0;(也就是说如果重复调用同一个函数,在第二次调用时,就不会再执行static局部变量初始化那句话 了)
    void staticLocalVar()
    {
    static int a = 0; // 运行期时初始化一次, 下次再调用时, 不进行初始化工作
    printf(“%d”,a);
    a++;
    }
    int main()
    {
    staticLocalVar(); // 第一次调用, 输出a=0
    staticLocalVar(); // 第二次调用, 记忆了第一次退出时的值, 输出a=1
    return 0;
    }
    注意事项:
    1. “记忆性”, 程序运行很重要的一点就是可重复性, 而static变量的”记忆性”破坏了这种可重复性, 造成不同时刻至运行的结果可能不同.
    2. “生存期”全局性和唯一性. 普通的local变量的存储空间分配在stack上, 因此每次调用函数时, 分配的空间都可能不一样, 而static具有全局唯一性的特点, 每次调用时, 都指向同一块内存, 这就造成一个很重要的问题 ---- 不可重入性
     
    二、修饰全局变量或者函数
      为了限制该全局变量或者函数的作用域仅限于本文件,又称为内部函数。对于外部(全局)变量, 不论是否有static限制, 它的存储区域都是在静态存储区, 都是全局的. 此时的static只是起作用域限制作用, 限定作用域在本模块(文)内部.

    使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。

    本文参考博文:https://blog.csdn.net/y780465649/article/details/52155641

  • 相关阅读:
    判断二分图的染色法
    dfs框架
    codeforces 158c
    省选总结
    云盘
    KMP
    二分
    【又想多了】 听 怎样成为高手-罗辑思维 记录
    小刘(第二版)
    UVA 1594:Ducci Sequence (模拟 Grade E)
  • 原文地址:https://www.cnblogs.com/Gustavo-G/p/13683781.html
Copyright © 2020-2023  润新知