C语言中的static关键字有很多用法,下面我们将详细介绍。
静态局部变量
1、1 定义
在函数内部定义的变量称为局部变量,当函数调用结束后,局部变量会被销毁,而在函数外部定义的变量称为全局变量,全局变量的作用域是整个程序,如果需要在函数内部使用一个与外部作用域相关的变量,可以使用static关键字将其定义为静态局部变量。
include <stdio.h> void func() { static int count = 0; // 静态局部变量 count++; printf("count: %d ", count); } int main() { for (int i = 0; i < 5; i++) { func(); } return 0; }
输出结果:
count: 1
count: 2
count: 3
count: 4
count: 5
1、2 特点
static局部变量的生命周期是整个程序运行期间,而不是函数调用期间。
static局部变量在函数调用之间保持其值不变。
static局部变量只能在声明它的函数内部访问。
静态全局变量
2、1 定义
在函数外部定义的变量称为全局变量,可以被程序内的任何函数访问,如果需要限制全局变量的作用域,可以使用static关键字将其定义为静态全局变量。
include <stdio.h> static int global_var = 10; // 静态全局变量 void print_global_var() { printf("global_var: %d ", global_var); } int main() { print_global_var(); // 可以访问静态全局变量 return 0; }
2、2 特点
static全局变量的作用域仅限于声明它的源文件。
static全局变量在程序运行期间只初始化一次。
static全局变量可以在多个源文件中共享,如果要在多个源文件中使用同一个静态全局变量,需要将其定义在一个单独的源文件中,并在其他源文件中使用extern关键字声明它。
静态函数
3、1 定义
使用static关键字修饰的函数称为静态函数,静态函数的作用域仅限于声明它的源文件,不能被其他源文件调用,静态函数可以访问静态局部变量和静态全局变量。
// file1.c static void static_func() { // 静态函数 printf("This is a static function. "); }
// file2.c extern void static_func(); // 在其他源文件中声明静态函数,但不能调用它(编译错误)
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/127931.html