gpt4 book ai didi

c - 在 C 中重新声明静态变量......从来没有发生过?

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:05 25 4
gpt4 key购买 nike

我试图完全理解静态变量在 C 中是如何工作的。我知道使用 static 关键字会使变量的生命周期等于程序的持续时间。下面的例子有一点让我感到困惑......

我的static_test.c 文件:

#include <stdio.h>

void foo(){
static int counter = 0;
counter++;
printf("This function has been called %i times.\n",counter);
return;
}

int main(){
int i;
for(i=0;i<10;i++){
foo();
}
return 0;
}

当我第一次读到这个例子时,我想知道为什么函数不会每次都打印出 0,因为我们将 0 分配给静态变量。

这是因为一旦声明了静态变量,编译器就会在下次调用我的 foo() 函数时忽略同一变量的另一个声明吗?

谢谢!

最佳答案

尽管使用了=,但这是一个初始化,而不是赋值。所以它发生在变量被初始化时,而不是当“语句”显然被“执行”时。由于是静态变量,所以在程序启动时就初始化一次,而不是每次函数运行时都初始化。

关于c - 在 C 中重新声明静态变量......从来没有发生过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17934195/

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