1. 修飾變量
靜態全局變量
作用域僅限變量被定義的文件中,其他文件使用extern聲明也無法使用。
靜態局部變量
在函數體內部定義,就只能在這個函數裏使用。
你真的會用static嗎?看看下面這個程序的輸出結果是多少?
#include <stdio.h>
void fun_a();
void fun_b();
int main()
{
int count = 3;
while (count--)
{
fun_a();
fun_b();
}
return 0;
}
void fun_a()
{
static int i = 0;
i++;
printf("i : %d\n", i);
}
void fun_b()
{
int j = 0;
j++;
printf("j : %d\n", j);
}
運行結果
i : 1
j : 1
i : 2
j : 1
i : 3
j : 1
講解
由於被static修飾的變量總是存在內存的靜態區,所以這個函數運行結束後該靜態變量的值還不會被銷燬,函數下次使用時仍然能用到這個值。
2. 修飾函數
函數前加static使得函數成爲靜態函數。
函數的作用域僅侷限於本文件(所以又稱內部函數)。
使用內部函數的好處是:不同的人編寫不同的函數時,不用擔心自己定義的函數是否會與其它文件中的函數同名。