C语言写一个函数只运行一次
时间: 2024-02-18 19:59:48 浏览: 350
在 C 语言中,可以通过静态局部变量和函数指针来实现一个函数只运行一次。下面是一个示例代码:
```c
void run_once(void (*func)(void)) {
static int flag = 0;
if (!flag) {
func();
flag = 1;
}
}
void my_func(void) {
printf("Hello, world!\n");
}
int main() {
run_once(my_func); // 只会输出一次 Hello, world!
run_once(my_func); // 不会输出任何内容
return 0;
}
```
在上面的代码中,我们定义了一个 `run_once` 函数,它接受一个函数指针作为参数,并且只会执行一次。在 `run_once` 函数中定义了一个静态局部变量 `flag`,用于标记函数是否已经被执行过。如果 `flag` 的值为 0,则执行传入的函数指针,并将 `flag` 的值设为 1,表示函数已经被执行过。如果 `flag` 的值为 1,则不执行传入的函数指针。
在 `main` 函数中,我们调用了两次 `run_once` 函数,第一次会输出 "Hello, world!",第二次不会输出任何内容,因为函数已经被执行过了。
需要注意的是,静态局部变量的生命周期与程序的运行周期相同,在函数被调用时被初始化,在程序结束时被销毁。因此,这种方法只能保证函数在一个程序运行周期内只执行一次,而不能保证在多个程序运行周期内只执行一次。
阅读全文