ANSI-C中的静态意味着什么

时间:2011-01-02 01:02:32

标签: c static keyword ansi-c

  

可能重复:
  What does “static” mean in a C program?

static关键字在C中的含义是什么?

我正在使用ANSI-C。我在几个代码示例中看到,它们在变量前面和函数前面使用static关键字。使用变量的目的是什么?使用函数的目的是什么?

2 个答案:

答案 0 :(得分:57)

正如一个简短的回答,在定义变量时,static关键字有两种用法:

1-在文件范围内定义的变量,static关键字,在函数外部定义,只能在该文件中可见。任何从其他文件访问它们的尝试都会在链接时导致未解析的符号。

2-在函数内的块内定义为static的变量将在相同代码块的不同调用中保持或“存活”。如果它们被定义为初始化,那么它们只被初始化一次。 static个变量通常保证默认初始化为0

答案 1 :(得分:31)

函数体内的

static,即用作变量存储分类器,使得该变量在函数调用之间保留它的值 - 可以说,函数中的静态变量只是可见的全局变量到那个功能。这种static的使用总是使它在线程不安全中使用的函数你应该避免它。

另一个用例是在全局范围内使用static,即全局变量和函数:静态函数和全局变量是编译单元的本地,即它们不会出现在导出表中编译的二进制对象。因此,它们不会污染命名空间。声明静态所有函数和全局变量不能从有问题的编译单元(即C文件)外部访问是个好主意!请注意,静态变量不能放在头文件中(除非是非常罕见的特殊情况)。