c语言static的用法举例
- 格式:docx
- 大小:29.04 KB
- 文档页数:5
c语言static的用法举例
在C语言中,关键字static可用于不同的上下文中,其主要功能有以下三种:
1.在函数内部声明的静态变量:
在函数内部声明的变量通常是局部变量,其作用域仅限于函数内部。但是,如果我们在局部变量前加上关键字static,则该变量将成为静态变量,并将其作用域扩展到整个函数的生命周期内。静态变量的存储空间将在程序启动时分配,并在程序终止时释放。静态变量的初始值默认为0。
例如:
```c
#include
void count() {
static int num = 0; //静态变量 num++;
printf("num = %d\n", num);
}
int main() {
count(); //输出:num = 1
count(); //输出:num = 2
count(); //输出:num = 3
return 0;
}
```
在上面的例子中,函数count内部的变量num是一个静态变量。每次调用count函数时,num的值都会自增,并且num的值在多次调用之间会被保留下来。
2.在文件内部声明的静态变量: 在文件内部声明的变量通常是全局变量,其作用域为整个文件,不能被其他文件所访问。但是,如果我们在全局变量前加上关键字static,则该变量将变为静态全局变量,作用域仍限制在文件内部。静态全局变量的生命周期与整个程序的运行周期相同。
例如:
```c
#include
static int count = 0; //静态全局变量
void increment() {
count++;
}
int main() {
increment();
increment();
printf("count = %d\n", count); //输出:count = 2 return 0;
}
```
在上面的例子中,全局变量count被声明为静态变量,因此它只能在所在的文件中访问。函数increment对count进行自增操作,最终输出count的值为2。
3.在函数声明和定义时使用静态函数:
函数通常是全局可见的,即可以被其他文件调用。但是,如果我们在函数声明和定义时使用关键字static,该函数将成为静态函数,作用域仅限于声明或定义它的文件内部,不能被其他文件所调用。
例如:
```c
#include
static void showMessage() { //静态函数
printf("This is a static function.\n"); }
int main() {
showMessage(); //调用静态函数
return 0;
}
```
在上面的例子中,函数showMessage被声明为静态函数,它只能在所在的文件中被调用。这种做法可以避免静态函数被其他文件中的代码错误地调用。
需要注意的是,静态变量和静态函数的关键字都是static,但它们具有不同的作用和用法。静态变量用于限制变量的作用域和生命周期,静态函数用于限制函数的作用域。静态变量和静态函数都是在编译时分配内存,且在程序运行期间不会释放。