Is the static
C 中的关键字仅用于将变量的范围限制为单个文件?
我需要知道我是否理解正确。请假设有以下3个文件,
file1.c
int a;
file2.c
int b;
file3.c
static int c;
现在,如果这 3 个文件一起编译,则变量“a”和“b”应该具有全局范围,并且可以从 3 个文件中的任何一个进行访问。但是,变量“c”是静态的,只能从 file3.c 访问,对吗?
Does static
C 中还有其他用途吗? (除了如上所示限制变量的范围之外?)
The static
关键字在 C 中有两个不同的用途,我称之为持续时间(对象的生命周期)和可见性(您可以从中使用对象)。请记住,C 标准实际上对这两个概念使用不同的单词,但我发现在教授该语言时最好从使用日常术语开始。
当在文件级别(在任何函数之外)使用时,它控制可见性。在文件级别定义的变量的持续时间已定义为程序的整个持续时间,因此您不需要static
为了那个原因。
文件级别的静态变量对于翻译单元之外的任何内容都是不可见的(链接器看不到它)。
当在函数级别(函数内部)使用时,它控制持续时间。这是因为可见性已被定义为该函数的本地可见性。
在这种情况下,变量的持续时间是程序的整个持续时间,并且该值在函数调用之间保持不变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)