static的使用
static關(guān)鍵字,表示了“靜態(tài)”,一般來說,他會(huì)被經(jīng)常用于變量和函數(shù)。一個(gè)static的變量,其實(shí)就是全局變量,只不過他是有作用域的全局變量。比如一個(gè)函數(shù)中的static變量:
char* getConsumerName()
{
static int cnt = 0;
....
cnt++;
....
}
cnt變量的值會(huì)跟隨著函數(shù)的調(diào)用次而遞增,函數(shù)退出后,cnt的值還存在,只是cnt只能在函數(shù)中才能被訪問。而cnt的內(nèi)存也只會(huì)在函數(shù)第一次被調(diào)用時(shí)才會(huì)被分配和初始化,以后每次進(jìn)入函數(shù),都不為static分配了,而直接使用上一次的值。對(duì)于一些被經(jīng)常調(diào)用的函數(shù)內(nèi)的常量,最好也聲明成static。但static的最多的用處卻不在這里,其最大的作用的控制訪問,在C中如果一個(gè)函數(shù)或是一個(gè)全局變量被聲明為static,那么,這個(gè)函數(shù)和這個(gè)全局變量,將只能在這個(gè)C文件中被訪問,如果別的C文件中調(diào)用這個(gè)C文件中的函數(shù),或是使用其中的全局(用extern關(guān)鍵字),將會(huì)發(fā)生鏈接時(shí)錯(cuò)誤。這個(gè)特性可以用于數(shù)據(jù)和程序保密。