`static`關鍵字在C和C++語言中具有多種用途,主要作用是控制變數的存儲類別和連結屬性,以及限制函式的可見性。
修飾變數:
當`static`用於修飾局部變數時,該變數被稱為靜態局部變數。它只在第一次進入作用域時初始化一次,並且在程式運行期間保持其值,直到程式結束。這種變數存放在全局數據區的靜態存儲區。
當`static`用於修飾全局變數時,該變數的作用域被限制為只在其定義的檔案內可見,不能在其他檔案中通過`extern`聲明來訪問。
修飾函式:
當`static`用於修飾函式時,該函式被稱為靜態函式。靜態函式只在定義它的檔案內可見,不能被其他檔案調用。
生命周期:
無論是在C語言中的靜態變數還是C++中的靜態成員變數,它們的生命周期都是從程式開始到程式結束。這意味著它們在程式開始時分配空間,在程式結束時釋放空間。
默認初始化:
靜態局部變數和靜態全局變數如果未顯式初始化,默認值為0。
封裝性和命名衝突:
使用`static`可以保持封裝性,避免命名衝突,因為靜態變數的作用域被限制在定義它的檔案內。
共享和記憶體使用:
使用`static`可以實現數據共享,節約記憶體,因為靜態變數只被創建一次,所有引用它的代碼都共享同一份數據。
外部定義:
在C++中,靜態成員變數必須在類外部定義,且不能在定義時加上`static`關鍵字。
綜上所述,`static`關鍵字的作用是控制變數的存儲和連結屬性,以及限制函式的可見性,以此來實現數據共享、節約記憶體、保持封裝性和避免命名衝突。