最近看程式,發現很多程式設計師喜歡通過函式操作全域性變數,通過函式返回全域性變數。
逛了一下論壇,發現通過函式操作全域性變數有很多好處。
首先在乙個檔案中用 static 定義全域性變數,如:
static int flag;//只能在本檔案中使用,避免了別的檔案誤用本變數
/*獲得全域性變數的值*/
int get_flag(void)
/*設定全域性變數的值*/
void set_flag(int flag_set)
別的檔案,如果要操作 flag 的值,可以通過 以上兩個函式來間接操作。這樣做有什麼好處呢?
1、static 修飾,限制全域性變數的使用範圍,避免別的檔案誤操作。
2、把全域性變數封裝成函式操作,方便查詢,便於除錯。如果定位到錯誤發生於全域性變數 flag 上,你會查詢哪些操作改動了全域性變數 flag,但你全域性搜尋該變數 flag 時,發現居然300處,你怎麼調式?怎麼排除?這是很麻煩的事兒,實際工程中,大多數地方都是用來比對的,只有很少的地方是用來修改全域性變數的,所以如果封裝成了函式 set_flag(),就可以直接搜尋函式名稱 set_flag 就能清楚明白地知道哪些地方修改了該變數。
3、效率問題,如果使用 __inline 修飾函式,效率就很高,跟直接操作變數沒啥區別。
static全域性變數 全域性變數
1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同。這兩者的區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是...
vue定義全域性變數,全域性函式
如題,在專案中,經常有些函式和變數是需要復用,比如說 伺服器位址,從後台拿到的 使用者的登入token,使用者的位址資訊等,這時候就需要設定一波全域性變數和全域性函式 原理 設定乙個專用的的全域性變數模組檔案,模組裡面定義一些變數初始狀態,用export default 暴露出去,在main.js裡...
全域性變數和靜態全域性變數
全域性變數和區域性變數是從變數的作用域的角度劃分。靜態變數和動態變數是從變數的記憶體分配的角度劃分。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同,區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原...