C语言中static的使用方法实例详解
介绍
static
是C语言中的一个关键字,可以用来修饰变量、函数、和数据结构。在不同的情境下,static
有不同的用途和行为。本文将对static
关键字的使用方法进行详细讲解,并提供两个具体的使用示例。
修饰变量
在函数内部使用
当static
修饰局部变量的时候,变量的生命周期不会随着函数的调用结束而结束,而是会在程序执行期间一直保留其值。这种变量也被称为静态局部变量。(注意,由于静态变量的赋值只会在程序初始化的时候进行一次,因此为了确保静态变量的初始化,必须要显示地给静态变量赋初值。)
下面的示例演示了静态局部变量的使用方法:
#include <stdio.h>
void func() {
static int count = 0;
count++;
printf("count = %d\n", count);
}
int main() {
func(); // 输出count = 1
func(); // 输出count = 2
func(); // 输出count = 3
return 0;
}
在该示例中,func()
函数中的变量count
是一个静态变量。该变量每次调用函数后都会被自增,且在下次调用函数的时候能够保留其值(即不会因为函数作用域结束而释放)。
在文件内使用
当static
修饰全局变量时,该变量只能被声明的源文件内部使用,无法通过其他源文件访问。这种变量也被称为静态全局变量。
下面的示例演示了静态全局变量的使用方法:
// file1.c
#include <stdio.h>
static int count = 0;
void func() {
count++;
printf("count in file1 = %d\n", count);
}
// file2.c
#include <stdio.h>
extern void func() ;
int main() {
func(); // 输出count in file1 = 1
func(); // 输出count in file1 = 2
return 0;
}
在该示例中,count
是一个静态全局变量,在源文件file1.c
中定义,因此只能被该源文件内部的函数或代码块所访问,无法被其他源文件直接访问。 所以在file2.c
中,我们需要通过函数func()
来访问count
变量。
修饰函数
当static
修饰函数时,该函数只能在声明它的源文件内部被使用,无法通过其他源文件进行调用。这种函数也被称为静态函数。
下面的示例演示了使用静态函数的方法:
#include <stdio.h>
static void static_func() {
printf("This is a static function.\n");
}
void public_func() {
printf("This is a public function.\n");
static_func();
}
int main() {
public_func(); // 输出 "This is a public function." 和 "This is a static function."
static_func(); // 编译错误:static_func is not declared in this scope
return 0;
}
在该示例中,static_func()
函数被声明为静态函数,只能在该源文件内部被调用。 public_func()
函数则是公共函数,可以被其他源文件调用,且可以同时调用static_func()
函数。
小结
static
关键字有三种用法,分别是修饰变量、修饰函数和修饰数据结构成员。当static
修饰变量时,可以用来实现静态局部变量和静态全局变量;当static
修饰函数时,可以用来实现静态函数;当static
修饰数据结构成员时,可以用来实现静态成员。
以上就是对C语言中static的使用方法实例详解
的介绍。希望能够对你理解该关键字的用法和场景有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言中static的使用方法实例详解 - Python技术站