C语言中static关键字的正确用法。

##C语言中static关键字的正确用法。

如果你想要创建一个带有计数功能的函数,你可以这么写:

int count = 0;
int counter()
{
	return ++count;
}

这段代码功能上没什么问题。但它使用了一个叫count的全局变量。count的作用域是全局。这意味着所有函数都可以修改count的值。在一个大型程序中,需要非常小心的控制全局变量的个数,因为它们可能导致代码出错。

但C语言允许你创建只能在函数局部作用域访问的全局变量。

int counter()
{
	static int count = 0;
	return ++count;
}

使用static关键字可以把变量保存在全局量区中(可以当成全局变量),但是当其他函数试图访问count变量时编译器会抛出错误。

如果你调用上面代码中的函数,count的值不会被反复定义(初始化)。

#include <stdio.h>

int main()
{
	int a = 0;
	a = counter(); // 此时a的值为1
	a = counter(); // 此时a的值为2
	printf("%d",a);
}

##用static定义私有变量或函数。

也可以在函数外使用static关键字,它表示“只有这个.c文件中的代码可以使用这个变量(或函数)”。举个例子:

static int days = 365;
static void update_account(int x)
{
	...
}
// 变量days和函数update_account只有当前.c文件可以访问。

static关键字可以用来控制变量或函数的作用域。可以防止其他代码以意想不到的方式访问你的数据或函数。