gpt4 book ai didi

c++ - C++ 中的 'static' 关键字

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:08 28 4
gpt4 key购买 nike

我意识到它在超出范围后保留了值(但变得无法访问),但我有几个问题。

  1. 当人们说它在范围之外不可访问时,这只是意味着您不能在其标识范围之外更改值(它会出错)?

  2. 我在考虑这段代码:

    #include "iostream"

    void staticExample();

    int main()
    {
    staticExample();

    return 0;
    }

    void staticExample()
    {
    for (int i = 1; i <= 10; ++i)
    {
    static int number = 1;
    std::cout << number << "\n";

    ++number;
    }
    }

我心想,在循环的每次迭代中,我都将“数字”变量设置为 1。正如我最初预期的那样,它打印了 1、2、3.. 10。编译器是否识别出将它设置为 1 的行是一个声明并忽略它的“更改”?

最佳答案

调用 staticExample 两次,看看你的输出会发生什么。这将帮助您理解适用于局部变量的“静态存储”。

#include <iostream> 

void staticExample()
{
static int number = 1;

for (int i = 1; i <= 10; ++i)
{
std::cout << number << "\n";
++number;
}
}

int main()
{
staticExample(); // begins counting at 1
staticExample(); // begins counting at 10

return 0;
}

输出:

12个3个4个5个6个78个91011121314151617181920

我曾经读过一句我喜欢的话,“你有堆栈存储和堆存储,但你还有另一种类型的存储。它称为静态,它既不在堆栈上也不在堆中。”不是逐字逐句,而是类似的东西。

关于c++ - C++ 中的 'static' 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9795846/

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