在C语言中, static的字面意思很容易把我们导入歧途, 其实它的作用有三条。   ??)先来介绍它的第一条也是最重要的一条:隐藏。   当我们同时编译多个文件时, 所有未加static前缀的全局变量和函数都具有全局可见性。 我举例来说明。 一个是a. c, 另一个是main. c的内容  顺序的运行后果是:  你能够会问:为什么在a. c中定义的全局变量a和函数msg能在main. 其它的源文件也能访问。 此例中, 并且都没有加static前缀, 因而关于另外的源文件main. c是可见的。 例如在a和msg的定义前加上static, main. c就看不到它们了。 而不用担忧命名抵触。 Static可以用作函数和变量的前缀, 关于函数来讲, static的作用仅限于隐藏, 而关于变量, static还有下面两个作用。 ?)static的第二个作用是保持变量内容的耐久。   存储在静态存储区:全局变量和static变量, static可以控制变量的可见范围, 虽然这种用法不罕见, 但我还是举一个例子。 由于全局变量也存储在静态数据区。 我们可以一个一个地把所有元素都置0, 假设定义成静态的, 再比如要把一个字符数组当字符串来用, 但又觉得每次在字符数组末尾加’\0’太麻烦。 假设把字符串定义成静态的, 就省去了这个麻烦, 由于那里原本就是’\0’。   顺序的运行后果如下  最后对static的三条作用做一句话总结。 首先static的最主要功用是隐藏, 其次由于static变量寄存在静态存储区, 所以它具有耐久性和默认值0。