gpt4 book ai didi

c - 在这个递归场景中,这个静态变量的作用是什么?

转载 作者:行者123 更新时间:2023-11-30 15:12:25 24 4
gpt4 key购买 nike

在下面的代码中,variable1 仅在第一次调用时被初始化为 0。我担心的是,在每个递归调用中都会声明static variable1;。这会导致跟踪数字出现问题吗?或者编译器是否知道在每个递归调用中跳过声明?

我的代码:

void funtion1(numberOfTimesCalled){
numberOfTimesCalled++;

static variable1;

if(numberofTimesCalled = 0){
variable1 = 0;
}

<some processing>

variable1= variable1+1;

if(variable1<10){
function1(numberOfTimesCalled);
}
}

最佳答案

My concern is that in every recursive call static variable1; is being declared.

是的,它是安全的,因为具有静态存储持续时间的变量不会再次重新声明。它的生命周期是程序的整个执行过程,并且之前仅初始化一次。因此,除非您打算“重置”varaible1 的值,否则您甚至不需要特殊的条件:

  if(numberofTimesCalled == 0){ // assuming you intended to check with ==, 
// a single = is for assignment.
variable1 = 0;
}

因为具有静态持续时间的变量将在程序启动时初始化为零。

关于c - 在这个递归场景中,这个静态变量的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35096565/

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