目录
-
- static
-
- 1)基本概念
- 2)主要特点
- 3)用途1:静态局部变量
- 4)用途2:静态全局变量
- 5)用途3:静态函数
- 6)总结
static
1)基本概念
static
是C语言的一个关键字。
static
常用于声明 静态局部变量 、静态全局变量 、静态函数。
static
的使用可以提高程序的模块性和封装性,防止命名冲突,并在一定程度上控制变量和函数的可见性。
2)主要特点
static的主要特点就是改变变量的:作用域 、生命周期 、存储位置。
对比四种变量。
变量类型 | 作用域 | 生命周期 | 存储位置 |
---|---|---|---|
局部变量 | 函数内部 | 从变量创建到函数结束 | 栈区 |
全局变量 | 项目内所有文件 | 整个程序运行期间 | 数据区 |
静态局部变量 | 函数内部 | 整个程序运行期间 | 数据区 |
静态全局变量 | 仅定义所在的文件 | 整个程序运行期间 | 数据区 |
对比两种函数。
变量类型 | 作用域 | 生命周期 | 存储位置 |
---|---|---|---|
全局函数 | 项目内所有文件 | 整个程序运行期间 | 代码区 |
静态函数 | 仅定义所在的文件 | 整个程序运行期间 | 代码区 |
3)用途1:静态局部变量
- 用于在函数内部声明的变量。生命周期为整个程序运行期间,但作用域限制在声明它的函数内。
- 目的是:保留其值在函数调用之间的状态。
C
void exampleFunction() {
static int count = 0; // 静态变量
count++;
}
4)用途2:静态全局变量
- 用于在全局作用域声明的变量。作用域限制在声明它的源文件内。
- 目的是:防止在其他文件中访问该全局变量。所以在不同的文件中,可以出现重名的静态全局变量。如果不加static修饰的话,是会报错:multiply defined(多重定义)。
C
// 文件1
static int globalVar = 42; // 静态全局变量 只能在该源文件中使用
// 文件2
static int globalVar = 32; // 静态全局变量 只能在该源文件中使用
5)用途3:静态函数
- 用于在文件内声明的函数,作用域限制在声明它的源文件内。
- 目的是:防止其他源文件调用该函数。
C
// 只能在该源文件中使用该函数
static void staticFunction() {
// 函数实现
}
6)总结
这些是 static
在C语言中的一些常见用法。static
的使用可以提高程序的模块性和封装性,防止命名冲突,并在一定程度上控制变量和函数的可见性。
- 一般,不希望其他文件调用本文件的XXX函数,就用static修饰它。
- 一般,不希望其他文件调用本文件的YYY变量,就用static修饰它。