目錄
1 static關鍵詞修飾全局變量
普通全局變量:全局變量定義在函數體之外,存在於全局數據區中,對整個工程的文件可見,不同文件不能定義同名的全局變量。各個文件之間共享全局變量,只需要用extern聲明即可,如下圖所示:
靜態全局變量:使用static聲明的全局變量稱爲靜態全局變量,也存在於全局數據區,但是對外部文件隱藏,只在本文文件中可見,不同文件可以用static聲明同名的全局變量,如下圖所示:
2 static關鍵詞修飾局部變量
普通局部變量:普通局部變量在函數體內聲明,存在於棧區,在函數調用時創建,函數返回時銷燬。如下圖所示:
靜態局部變量:靜態局部變量在函數體內聲明,存在於全局區,在編譯期創建初始化,整個程序結束後銷燬。如下圖所示:
3 static關鍵詞修飾函數
普通函數將函數聲明放在頭文件中,其他文件加載該頭文件便可以引用這些函數,不同文件中不能定義相同名稱的函數,否則編譯不通過。
靜態函數與普通函數的作用域不同,僅在本文件中可以使用,對外部文件隱藏,不同的文件可以使用static定義相同名稱的函數。除此之外,static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝