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) 」许可协议授权,转载或使用请署名并注明出处。
相关推荐
-
如何巧妙地使用for循环?
之前,我们需要先了解一些基础知识。for循环有三个部分:初始化、条件和迭代器。初始化通常用于声明循环变量,条件用于判断是否继续循环,而迭代器用于更新循环变量的值。基础知识了解完毕后,让我们开始探索如何
-
如何判断数据类型?
:使用isinstance()函数 与type()函数不同,isinstance()函数可以判断一个变量是否属于某种数据类型。 a = 123 print(isinstance(a, int)) #
-
如何声明变量?
前言 在编程的世界里,变量是一种非常重要的概念。无论是学习编程还是进行编程实践,都需要对变量有深入的理解。在本文中,我们将详细介绍如何声明变量,在语法和实践中帮助读者更好地掌握这一概念。 什么是变量
-
如何使用getAttribute函数?——JavaScript属性值获取指南
Div"的元素。接下来,我们使用getAttribute函数获取了它的class属性值,并将其存储在变量classValue中。最后,我们使用console.log函数将classValue输出到控制
-
如何使用forEach循环?
Array中。 如何使用forEach循环实现元素累加? 在forEach()方法中,我们可以使用变量对每个元素进行累加,并返回累加后的结果。 let array = [1, 2, 3, 4,
-
如何使用data属性?-从小白到大佬
尔值、对象、数组等等。 这些数据可以通过JavaScript来读取和修改,这样我们就可以在不使用全局变量的情况下,将数据传递给不同的函数和模块。 此外,使用data属性还可以让我们在HTML元素上添加
-
如何使用async-await?
ise对象,其中await关键字用于等待异步操作的结果。当异步操作完成时,结果将被赋值给result变量。 使用async/await的实例 下面是一个使用async/await的实例: func
-
如何使用new关键字创建实例?
码中,Constructor是一个构造函数。使用new关键字创建了一个新的对象实例并将其分配给obj变量。这个过程称为实例化。 创建自定义构造函数 JavaScript中的构造函数是一种特殊的函数,
-
如何替换正则表达式?
lo!' 模板字符串替换 模板字符串替换是一种更简洁、易读的替换方法,它使用 ${} 语法来引用变量。这种方法适用于需要根据变量值动态生成文本的场景。 // 示例代码 let
-
如何使用模板字符串?
pt中,模板字符串是一种特殊的字符串,用反引号(`)包含,可以在其中嵌入JavaScript表达式和变量,使得代码更加简洁易读。 const name = 'John'; const age = 25
词雅网