【发布时间】:2022-06-16 17:25:37
【问题描述】:
我的 C 生锈了,请帮帮我。
static int i = 42;
int main()
{
}
创建一个具有全局范围和内部链接的变量i。这意味着任何人都可以引用它,但只有翻译单元(.c 文件)中的条目不会破坏链接器。在程序链接时分配,在输入main()之前初始化。
void foo()
{
static int i = 69;
}
创建一个具有函数作用域但没有链接的变量。这意味着foo() 之外的任何内容都无法引用它,即使编译器没有大声喊叫,获取这个(本质上受保护的全局)变量的地址也是 UB。它在程序链接期间分配,并在首次调用foo() 时初始化。
请指正!
【问题讨论】: