默认情况下静态函数中的所有变量都是静态的吗?

Dyz*_*zet 3 c++ static

static void Foo()
{
    int bar = 0;
}
Run Code Online (Sandbox Code Playgroud)

条形图是否默认为静态?标准对此有何看法?

Jon*_*Mee 8

不,在C++中创建变量static的唯一规定是static关键字.

例如,如果您更改Foo为:

static void Foo()
{
    int bar = 0;

    bar++;
    cout << bar << endl;
}
Run Code Online (Sandbox Code Playgroud)

然后打电话:

Foo();
Foo();
Run Code Online (Sandbox Code Playgroud)

因为bar不是静态的输出将是:

1
1

但是,如果您声明bar如下static:

static void Foo()
{
    static int bar = 0;

    bar++;
    cout << bar << endl;
}
Run Code Online (Sandbox Code Playgroud)

你的输出实际上是:

1
2


das*_*ght 5

不,默认情况下,静态函数内的变量在自动存储中分配.

static函数和static变量表示在C和C++语法中重复使用相同关键字的正交概念

  • 创建函数static告诉编译器将其隐藏在其他翻译单元中定义的函数中
  • 创建变量static告诉编译器将该变量的数据放在静态存储中.

使用staticfor功能与静态存储区域无关.