gpt4 book ai didi

c - static - 仅用于限制范围?

转载 作者:太空狗 更新时间:2023-10-29 17:04:47 24 4
gpt4 key购买 nike

C 中的static 关键字是否仅用于将变量的范围限制为单个文件?

我需要知道我是否理解正确。请假设以下 3 个文件,

文件1.c

int a;

文件2.c

int b;

文件3.c

static int c;

现在,如果这 3 个文件一起编译,那么变量“a”和“b”应该具有全局范围,并且可以从 3 个文件中的任何一个访问。但是,变量“c”是静态的,只能从 file3.c 访问,对吧?

static 在 C 中还有其他用途吗? (除了如上所示限制变量的范围?)

最佳答案

static 关键字在 C 中有两个不同的用途,我称之为持续时间(对象的生命周期)和可见性(您可以从中使用对象的位置)。请记住,C 标准实际上对这两个概念使用了不同的词,但我发现在教授这门语言时最好从日常术语开始。

在文件级别(在任何函数之外)使用时,它控制可见性。在文件级别定义的变量的持续时间已经定义为程序的整个持续时间,因此您不需要 static

文件级别的静态变量对翻译单元之外的任何内容都是不可见的(链接器看不到它)。

在函数级别(函数内部)使用时,它控制持续时间。这是因为可见性已被定义为该函数的局部。

在这种情况下,变量的持续时间是程序的整个持续时间,并且该值在函数调用之间保持不变。

关于c - static - 仅用于限制范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1795397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com