1、修飾變量
變量分為局部和全局變量,但是都存於內存的靜態區。靜態全局變量的作用域僅局限於變量被定義的文件中,其他文件即使使用extern也沒法使用,其範圍準確的說是從定義之初開始,到文件結尾處結束。在其前面定義的代碼行也不能使用。
靜態局部變量,在函數體裏面定義的,就只能在這個函數裏用了,同壹個文檔中的其他函數也用不了。由於被static 修飾的變量總是存在內存的靜態區,所以即使這個函數運行結束,這個靜態變量的值還是不會被銷毀,函數下次使用時仍然能用到這個值。
2、修飾函數
函數前加static 使得函數成為靜態函數。但此處“static”的含義不是指存儲方式,而是指對函數的作用域僅局限於本文件(所以又稱內部函數)。使用內部函數的好處是:不同的人編寫不同的函數時,不用擔心自己定義的函數,是否會與其它文件中的函數同名。
關鍵字static 有著不尋常的歷史。起初,在C 中引入關鍵字static 是為了表示退出壹個塊後仍然存在的局部變量。隨後,static 在C 中有了第二種含義:用來表示不能被其它文件訪問的全局變量和函數。為了避免引入新的關鍵字,所以仍使用static 關鍵字來表示這第二種含義。