我在C代码中看到了在不同的地方使用的单词static
;这是否类似于C#(实现在对象之间共享)中的静态函数/类
- 函数中的静态变量在调用之间保持其值
- 静态全局变量或函数仅在其声明的文件中“可见”
(1) 如果你是一个新手,这是一个比较陌生的话题,下面是一个例子:
#包括<;标准h>;
void foo()
{
INTA=10;
静态int-sa=10;
a+=5;
sa+=5;
printf(“a=%d,sa=%d\n”,a,sa);
}
int main()
{
int i;
对于(i=0;i<;10;++i)
foo();
}
这张照片是:
a=15,sa=15
a=15,sa=20
a=15,sa=25
a=15,sa=30
a=15,sa=35
a=15,sa=40
a=15,sa=45
a=15,sa=50
a=15,sa=55
a=15,sa=60
如果函数需要在调用之间保持某种状态,并且您不想使用全局变量,那么这将非常有用。但是,请注意,此功能的使用应该非常谨慎-它使您的代码不是线程安全的,并且更难理解
(2) 被广泛用作“访问控制”功能。如果您有一个实现某些功能的.c文件,它通常只向用户公开一些“公共”功能。它的其余功能应该是静态的,这样用户就不能访问它们了。这是封装,一个很好的实践
引用维基百科:
在C编程语言中,静态
与全局变量和
函数将其作用域设置为
包含文件。在局部变量中,
static用于存储变量
在静态分配的内存中
而不是自动分配
记忆力而语言却不是
命令执行其中一项
静态分配的内存类型
内存通常保留在数据中
编译时的程序段
时间,而
分配的内存通常是
作为临时调用堆栈实现
回答你的第二个问题,它不像C
中,代码> static 也用来定义类属性(在同一个类的所有对象之间共享)和方法。在C语言中没有类,所以这个特性是不相关的