C++中的局部/静态变量范围

Geo*_*iuc 2 c++ variables static scope

如果我写这样的东西:

#include <iostream>

int main()
{
    using namespace std;

    {int n;n=5;} cout<<n;
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我n是未声明的.然后我试着让它静止,但是再一次,编译器告诉我它是未声明的.变量declated static是否具有程序范围?如果没有,我如何在此程序中使用n?

Ben*_*ley 11

你将范围与生命周期混淆了.静态变量的生命周期等于程序的生命周期,但它们仍然遵循基于声明它们的位置的范围规则.

  • 那么范围意味着我可以实际使用变量吗? (2认同)
  • @GeorgeIrimiciuc:通过将其声明从括号中删除来改变其范围. (2认同)

Mes*_*der 6

n 的范围就在括号之间:

{int n;n=5;}
Run Code Online (Sandbox Code Playgroud)

所以在块之外,你没有 n 变量。

将其设为静态只会使其在退出块后的值保留,以便下次再次进入该块时,您可以从上次执行该块时检索它的值,但它的范围仍然在括号内。