如何在C语言中使用静态变量
在一个函数中,你可以使用static 关键字来初始化一个静态变量。
我说 "在函数内部",是因为全局变量默认是静态的,所以不需要添加关键字。
什么是静态变量?如果没有指定初始值,静态变量会被初始化为0,并在不同的函数调用中保留该值。
考虑一下这个函数。
int incrementAge() {
int age = 0;
age++;
return age;
}
如果我们调用一次incrementAge() ,我们会得到1 作为返回值。如果我们多次调用它,我们将总是得到1的返回值,因为age 是一个局部变量,它在每次函数调用时都被重新初始化为0 。
如果我们把这个函数改成。
int incrementAge() {
static int age = 0;
age++;
return age;
}
现在我们每次调用这个函数时,都会得到一个递增的值。
printf("%d\n", incrementAge());
printf("%d\n", incrementAge());
printf("%d\n", incrementAge());
将给我们带来
1
2
3
我们也可以在static int age = 0; ,省略将age 初始化为0,只写static int age; ,因为静态变量在创建时就自动设置为0。
我们也可以有静态数组。在这种情况下,数组中的每个单项都被初始化为0。
int incrementAge() {
static int ages[3];
ages[0]++;
return ages[0];
}