首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态在ANSI-C中的含义是什么?

静态在ANSI-C中的含义是什么?
EN

Stack Overflow用户
提问于 2011-01-02 01:02:32
回答 2查看 46K关注 0票数 34

可能重复:

What does “static” mean in a C program?

static关键字在C中意味着什么?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-02 01:16:33

简单的回答是,在定义变量时,static关键字有两种用法:

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

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

票数 59
EN

Stack Overflow用户

发布于 2011-01-02 01:13:50

函数体内的static,即用作变量存储分类器,使该变量在函数调用之间保留其值--可以说,函数中的静态变量是只对该函数可见的全局变量。这种static的使用总是会使它在线程中使用的函数不安全,您应该避免它。

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

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4576607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档