static全局變量 與 普通的全局變量 區別:
1、作用域不同:static全局變量 的作用域 為 定義該變量的源文件 ,也就是只能被該文件中的函數公用,從而避免在其他源文件中引起錯誤。稱為文件作用域。
2、static全局變量在編譯時初始化,也就是在main()函數之前初始化並且僅能初始化一次。
相同點:
1、靜態儲存方式:被放在程序的靜態數據存儲區(全局可見)中,這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它們與堆變量、堆變量的區別。而局部變量在棧里分配空間
總結:
全局變量改變為靜態變量后是改變了它的作用域,限制了它的使用范圍
static函數和普通函數區別:
區別
1.文件作用域:普通函數的定義和聲明默認情況下是extern的,但靜態函數只是在聲明他的文件當中可見,不能被其他文件所用。好處:其他文件中可以定義相同名字的函數,不會發生沖突。
2.普通函數在C++類中編譯后帶一個隱藏的this參數,而static函數不帶。