C语言备忘录——static

Posted daker-code

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言备忘录——static相关的知识,希望对你有一定的参考价值。

  对于这个关键字我一直没有弄清楚,今天特地去花了一定的时间去理解这个关键字。在函数或变量声明时,在数据类型前加上 static 后会有以下几个效果

  一、用于函数定义时:

    1、函数的链接属性会被修改,从extrenal 变为internal

    2、函数的存储类型与作用域不受影响

  二、用于变量声明时:

    1、将变量的存储类型从自动变成静态

    2、链接属性和作用域不受影响

    3、生命周期将被延续到整个程序结束

  三、最重要的一点:

    无论是函数还是变量,一但被冠上static 那么他们只能在被声明的文件中访问!

 

针对2.3我特别举个栗子:  

 1 #include <stdio.h>
 2 
 3 int fun(void);
 4 
 5 int main(void)
 6 
 7     ……
 8     fun();
 9     ……
10     return 0;
11 
12 
13 int fun()
14 
15   static int a;
16    ……    
17 

 

  这里如果 fun 中的 int a 没有限定符static那么当fun结束后 a 就会被回收,作用域从17行开始到函数结束。但现在就不同了,变量a的声明周期从原本的函数内变成了整个程序,程序开始运行就有了变量a了,到程序结束变量a才会被回收。

  但是,但是,但是其作用作用域仍然变不变!

切记,无论是函数还是变量,static一定不会改变作用域,但一定会改变链接域

 

以上是关于C语言备忘录——static的主要内容,如果未能解决你的问题,请参考以下文章

备忘录设计模式详解C/Java/JS/Go/Python/TS不同语言实现

R语言备忘录

R语言备忘录

Java数组备忘录

Go语言备忘录:反射的原理与使用详解

C++个人备忘录