You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++函数中声明无需重复初始化的局部变量?

函数内持久化局部变量的正确实现

你当前的代码确实会每次调用fun时都把storedVal重置为0.0f——因为它是普通局部变量,每次函数调用都会重新分配内存并执行初始化。要实现“作用域局限于函数内,但保留上一次调用的值”,只需要用static关键字修饰该变量即可。

修改后的代码:

void fun(float a[], float c){
    static float storedVal = 0.0f; // 仅第一次调用时初始化,后续调用保留之前的值
    if (on) {
        storedVal = c;
        on = false;
    }
    else if (c - storedVal > 0.5f) {
        a[0] = storedVal;
    }
}

关键说明:

  • static修饰的局部变量,生命周期贯穿整个程序运行期,只会在第一次进入函数时执行初始化操作,后续调用函数时不会再重置它的值。
  • 该变量的作用域仍然局限在fun函数内部,外部代码无法直接访问,完全符合你的需求。
  • 额外提示:浮点数直接做差值比较可能存在精度误差,如果业务场景对精度敏感,可以考虑引入一个极小的阈值(比如1e-6)来判断差值是否大于0.5,例如:if (c - storedVal > 0.5f + 1e-6f)。

内容的提问来源于stack exchange,提问作者frankie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:06:04