static全局變量與普通全局變量的區別,static局部變量與普通局部變量的區別,static函數與普通函數的區別


static全局變量與普通全局變量的區別

static全局變量和普通全局變量的存儲方式沒有不同,如果它們都已經初始化,那么存放在進程的數據段中,否則存放在bss段。這兩者的不同點在於作用域不同,當一個可執行目標文件是由多個源文件編譯而成,則普通全局變量在在各個源文件都是有效的。而static全局變量只能在它定義的源文件中使用。由於靜態全局變量的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。

static局部變量和普通局部變量的區別

static局部變量和普通局部變量的存儲方式與作用域都不同。普通局部變量只在聲明它的函數被調用時才會分配棧空間,並且只能在該函數內使用。而static局部變量存儲在數據段或bss段中(靜態存儲區),並且源文件的所有函數都可以使用它。

static函數與普通函數的區別

static函數與普通函數的作用域不同普通函數的定義和聲明默認情況下是extern的,在源程序的所有文件中可見,但static函數只是在聲明他的文件中可見,不能被其他文件所用。所以說定義static函數有以下好處:

1)其他文件中可以定義相同名字的函數,不會發生沖突 

2)靜態函數不能被其他文件所用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM