C C++ 中 static 的用法全局变量与局部变量

引言

在 C 和 C++ 中,static 关键字有着很多不同的用法,其中最常见的用法是定义全局变量和局部变量。然而,由于 static 可以用在不同的上下文中,它的含义和作用也会有所不同。在本文中,我们将详细探讨 static 关键字在 C 和 C++ 中定义全局变量和局部变量时的用法。

定义全局变量

在 C 和 C++ 中,可以使用 static 关键字定义全局变量。与普通的全局变量不同,静态全局变量只能在定义它的文件中访问,不能在其他文件中使用。这种限制有时候也被称为 "文件作用域"。

/* 使用 static 定义全局变量 */
static int g_StaticGlobal = 0;

int main()
{
    /* 访问静态全局变量 */
    printf("%d", g_StaticGlobal);

    return 0;
}

在上面的示例中,我们使用 static 定义了一个静态全局变量 g_StaticGlobal。由于它是静态的,它只能在定义它的文件中访问。在 main 函数中,我们可以通过 g_StaticGlobal 访问它。

定义局部变量

除了定义全局变量,static 还可以用来定义静态局部变量。静态局部变量和普通的局部变量有些许不同,它的生命周期不是和函数调用相同,而是在整个程序运行期间都存在。此外,静态局部变量的值也可以在函数调用之间保持不变。

void TestStaticLocalVariable()
{
    /* 定义静态局部变量 */
    static int s_StaticLocalVariable = 0;

    /* 每次调用函数,静态局部变量的值加一 */
    s_StaticLocalVariable++;

    /* 输出静态局部变量的值 */
    printf("%d\n", s_StaticLocalVariable);
}

int main()
{
    /* 调用 TestStaticLocalVariable 函数三次 */
    TestStaticLocalVariable();
    TestStaticLocalVariable();
    TestStaticLocalVariable();

    return 0;
}

在上面的示例中,我们定义了一个静态局部变量 s_StaticLocalVariable。每次调用 TestStaticLocalVariable 函数时,它的值都会加一。由于它是静态的,它的值在函数调用之间保持不变。

总结

在 C 和 C++ 中,static 关键字有着很多不同的用法。其中最常见的用法是定义全局变量和局部变量。静态全局变量只能在定义它的文件中访问,而静态局部变量的生命周期不是和函数调用相同,而是在整个程序运行期间都存在。

本文来源:词雅网

本文地址:https://www.ciyawang.com/l07qpm.html

本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。

相关推荐