c
中的static
的作用,要根據上下文有所不同
1.如果修飾**塊外的變數或函式,是修改該變數或函式的鏈結屬性,讓他們只在當前原始檔內可以訪問,在其他原始檔不可訪問,因為預設的情況下,在所有**塊外的變數或函式都是
external
的,在其他的原始檔中都可以訪問,加上
static
的修飾,讓他們變成
internal
的,只在本原始檔可用,比如下面的**,在第
3行,第
5行加了
static
修飾符,使他們通過其他檔案無法訪問:
1 #include
2 3static int a;
4 int b;
5static int func(int n);
67 int main (int argc, char *argv)813
14 int func1(int n)
15 2.
當static
用在**塊內的變數修飾時,表明這個變數時乙個靜態變數,儲存在靜態儲存區,這種情況下相當於改變了變數的儲存屬性,因為預設的情況下,**塊內的變數為自動變數(
auto
),儲存在執行時的棧中,加上
static
修飾,他就儲存在靜態儲存區,在程式執行之前建立,在整個執行期間都存在,但這並不改變他的作用域。比如下面的**,在第
13行宣告了乙個區域性靜態變數:
1#include 2
3 4int main (int argc, char *argv)510
11int func1(int n)
12順便說一句,在
c++中,通常用
static
來修飾類的函式成員或資料成員,他的作用是表明這個函式或資料成員是屬於這個類的,而不是屬於某個特定例項物件的,可以通過
類名::
func
來直接訪問。
C 中static用法總結
1 c 語言的 static 關鍵字有三種 1.靜態區域性變數 2.靜態全域性變數 3.靜態函式 注 對應於上面,static修飾普通變數分為靜態區域性和靜態全域性兩種。靜態全域性變數和靜態函式的作用類似,均只在本檔案內可見,不能為其他檔案所用,故其實也可以將靜態全域性變數和靜態函式作為一類,而靜態...
c 中static作用總結
當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。舉例來說明。同時編譯兩個原始檔,乙個是a.c,另乙個是main.c。char a a global variable void msg int main 程式執行結果為 a hello由於所有未加static字首的全...
C 類中的static成員學習總結
c 類中的static成員學習總結 c 類背後蘊含資料抽象和封裝思想。資料抽象是一種依賴於介面和實現分離的程式設計技術。封裝是一項將低層次的元素組合起來形成的新的 高層次實體。對於類而言c 的全域性物件會破壞封裝 全域性物件需要支援特定類的抽象的實現。因為c 類是資料抽象和封裝的結果,在定義類的時候...