當前位置:才華齋>計算機>C語言>

C語言作用域入門學習

C語言 閱讀(1.29W)

程式中名字的作用域,通俗的講,就是這個名字在程式中的使用範圍。在C語言中,作用域的規則相對比較簡單,主要分為全域性作用域和區域性作用域兩種。下面小編整理了C語言作用域入門學習知識,希望對大家有幫助!

C語言作用域入門學習

一個變數如果定義在函式中,那麼這個變數的作用域就是一個區域性作用域,在函式外面不能訪問這個變數。在別的函式中定義同名的變數,也不會出現名字衝突,因為它們都處於各自的區域性作用域中。

外部變數或函式的作用域是從宣告的位置開始,到所在檔案的末尾。如果需要在別的檔案中引用不在這個檔案中定義的.外部變數,或者在這個變數定義之前使用,可以通過關鍵字 extern 進行宣告。

extern 修飾符的作用是,告知該變數已經在別的地方定義了。外部變數和函式預設具有全域性作用域,所以可以在程式的任何位置進行引用。

main() { ... }int sp = 0;double val[MAXVAL];void push(double f) { ... }double pop(void) { ... }

在上面的程式碼中,sp和val的作用域是從它們定義的位置開始的,所以可以在push和pop函式中引用這兩個變數。而在main函式中,不能直接引用這兩個變數。如果需要引用在後面定義的變數,可以使用關鍵字 extern 宣告需要使用的變數。在上面的程式碼中,如果需要在main中使用sp,則可以這樣宣告:

extern int sp;

宣告和定義的區別:宣告只是告知這個變數的型別,而定義一個變數,除了告知變數的型別,還會為變數分配儲存空間。

在一個程式中,外部變數的定義只能有一處,而外部變數的宣告可以出現在任何需要引用這個變數的檔案中。通過在檔案中使用 extern 關鍵字宣告一個變數,可以使用在別的地方宣告的變數。

 static修飾符

在C語言中,static修飾符用於定義靜態變數。static除了可以修飾變數外,還可以修飾函式。

對於外部變數和函式,static修飾符會限制它們的作用域,使它們只能在定義它們的檔案中使用,作用域不能傳播到檔案外。

使用static修飾符,提供了一種隱藏名字的方式,可以將名字限定在一個檔案中,防止名字衝突。

static char buf[BUFSIZE];static int bufp = 0;int getch(void) { ... }void ungetch(int c) { ... }

在上面的程式碼中,bufp和buf都只能在函式getch和ungetch中使用,而不能在別的檔案中使用,即使在別的檔案中使用了extern宣告。

static修飾符除了可以修飾外部變數和函式外,也可以作用於區域性變數。通過static修飾的區域性變數,在函式中的儲存空間將不會再函式結束後銷燬,而是一直存在直到程式結束。當程式再次被呼叫時,仍舊可以訪問這個區域的記憶體