變量分為局部變量和全局變量,但它們都存儲在內存的靜態區域。靜態全局變量的作用域僅限於定義該變量的文件,其他文件即使使用extern也不能使用。準確地說,範圍從定義的開頭開始,到文件的結尾結束。在它之前定義的代碼行也不能使用。
靜態局部變量,在函數體中定義,只能在本函數中使用,同壹文檔中的其他函數不能使用。因為static修改的變量總是存在於內存的靜態區域,所以即使函數結束,這個靜態變量的值也不會被破壞,函數下次仍然可以使用這個值。
2.修飾功能
在函數前添加static使其成為靜態函數。不過這裏的“靜態”的意思並不是指存儲方式,而是指函數的作用範圍僅限於這個文件(所以也叫內部函數)。使用內部函數的好處是,不同的人寫不同的函數時,不用擔心自己定義的函數是否會和其他文件中的函數同名。
關鍵字static有壹段不尋常的歷史。起初,關鍵字static是在C中引入的,用來表示在退出塊後仍然存在的局部變量。隨後,static在C中有了第二層含義:用來表示其他文件無法訪問的全局變量和函數。為了避免引入新的關鍵字,仍然使用靜態關鍵字來表達這第二層含義。