利用static屬性隱藏變量和函數的名字

 
   C程序員使用static屬性在模塊內部隱藏變量和函數聲明,就像你在Java和C++中使用public和private聲明一樣。C源代碼文件扮演模塊的角色,任何聲明帶有static屬性的全局變量或者函數都是模塊私有的。類似地,任何聲明爲不待static屬性的全局變量和函數都是公共的,可以被其他模塊訪問。儘可能用static屬性來保護你的變量和函數是很好地編程習慣。

——摘自《深入理解計算機系統》第七章7.5

    我自己再補充兩句,如果在一個文件中用extern屬性聲明一個變量或函數,那麼這個變量或函數就可以被其他模塊中的函數所引用。如果一個變量在一個模塊中但不是在這個模塊的漢書中定義,那麼這個變量可以被這個模塊中的任何函數所引用(也就是其爲模塊中的全局變量),但是不能被這個模塊以外的函數引用。類似地,函數也是如此。另外,在一個模塊的函數內是否用static屬性定義變量,該變量的存儲方式是不一樣的。如果在函數內不用static屬性定義變量,則變量在棧中創建。函數的生命週期一結束,該變量也就over了。而用static屬性定義變量,該變量會存儲在靜態存儲區(可能是堆中),函數一完其也跟着完。但是正如以上所言,其他函數無法訪問或引用該函數的這個static變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章