c不支持的存儲類別
⑴ 2018年3月計算機二級考試C語言考點解析:用戶標識符的作用域和存儲類
2018年3月計算機二級考試C語言考點解析:用戶標識符的作用域和存儲類
12.1局部變數和全局變數
在函數內部或復合語句內部定義的變數稱為局部變數。函數的形參屬於局部變數。在函數外部定義的變數稱為全局變數。有時,局部變數也稱為內部變數,全局變數也稱為外部變數。
12.2變數的存儲屬性(自動、靜態、寄存器、外部),變數的作用域和生存期
C語言中來說明變數存儲屬性的關鍵字有四個:auto(自動)、static(靜態)、register(寄存器)、extern(外部)。
1.局部變數的存儲屬性
局部變數可以是自動類別(用auto,register說明),也可以是靜態類別(用static說明)。形參只能是自動存儲類別,不允許是static類別。
當局部變數未指明類別時,被自動說明成自動(auto)變數。這類局部變數稱為自動變數。其值存放在內存的動態存儲區,因此在退出作用域後,變數被自動釋放,其值不予保留。
當局部變數說明成寄存器(register)類型時,與自動(auto)變數一樣屬於自動類別,所不同的是此時變數的值保留在CPU中的寄存器中。
當變數說明成static(靜態)類型時,稱這樣的變數為靜態局部變數。在程序運行期間,它占據一個永久的存儲單元,在函數退出後,變數的值仍舊保留。
2.全局變數的存儲屬性
全局變數都屬於靜態存儲類別,可以用extern和static對它們進行說明。
當一個文件中要引用另一文件中的全局變數或在全局變數定義前要引用它時,可用extern說明。相當於擴大全局變數的作用域。
用static(靜態)說明的全局變數稱為靜態全局變數,它僅能由本文件引用,即使在其文件中用extern說明也不能使用,它相當於限制了全局變數作用域的擴展。
12.3內部函數和外部函數
1.在C語言中,所有的函數在本質上都是外部函數。
2.函數定義時用extern進行說明稱為外部函數。函數的隱含類別為外部函數,外部函數可以被其他文件調用。
3.定義函數時用static進行說明稱為靜態函數,也稱內部函數。靜態函數也是外部函數,只是它僅局限於它所在的文件,其他文件不能調用。
⑵ 函數的隱含存儲類別是()
函數的存儲類型指的是其他文件模塊可否訪問,其類別可以是extern或static。
static是指該函數只能被本源程序文件道中的模塊訪問。extern是指可被本源程序文件外的模塊訪問。
C語言中函數的存儲類型隱含為版全局的,因此默認為extern。
函數內定義的變數,默權認作用域在本函數內,即其類型是auto。
(2)c不支持的存儲類別擴展閱讀:
在C語言中,提供了四種存儲類型的存儲說明符:auto、Register、Extern和static。這四個存儲類別說明符有兩個存儲術語:自動存儲術語和靜態存儲術語。
「自動」和「寄存器」對應的是自動存儲周期。具有自動存儲周期的變數在進入聲明變數的塊時被創建,在塊活動時存在,在塊退出時被撤銷。在函數中定義的變數成為局部變數。在一些C教科書中,局部變數被稱為automatic,這與使用可選關鍵字auto定義局部變數的做法一致。
Extern通常用於變數聲明:在*中的另一個文件中引用全局變數。在*.h中應該使用extern來聲明全局變數。
⑶ 未指定儲存類別的變數其隱含的儲存類別是什麼
auto。
auto是C語言的關鍵字之一,用於聲明自動變數,即局部變數。當變數未指定存儲類別時,其隱含的存儲類別默認為auto,也就是自動變數。
⑷ 在C語言中,存儲類別包括
TurboC2.0支持四種變數存儲類型。說明符如下:
autostaticexternregister
下面分別來介紹。
一、auto
auto稱為自動變數。
局部變數是指在函數內部說明的變數(有時也稱為自動變數)。用關鍵字auto進
行說明,當auto省略時,所有的非全程變數都被認為是局部變數,所以auto實際上
從來不用。
局部變數在函數調用時自動產生,但不會自動初始化,隨函數調用的結束,這
個變數也就自動消失了,下次調用此函數時再自動產生,還要再賦值,退出時又自
動消失。
二、static
static稱為靜態變數。根據變數的類型可以分為靜態局部變數和靜態全程變數。
1.靜態局部變數
它與局部變數的區別在於:在函數退出時,這個變數始終存在,但不能被其它
函數使用,當再次進入該函數時,將保存上次的結果。其它與局部變數一樣。
2.靜態全程變數
TurboC2.0允許將大型程序分成若干獨立模塊文件分別編譯,然後將所有模塊
的目標文件連接在一起,從而提高編譯速度,同時也便於軟體的管理和維護。靜態
全程變數就是指只在定義它的源文件中可見而在其它源文件中不可見的變數。它與
全程變數的區別是:全程變數可以再說明為外部變數(extern),被其它源文件使用,
而靜態全程變數卻不能再被說明為外部的,即只能被所在的源文件使用。
三、extern
extern稱為外部變數。為了使變數除了在定義它的源文件中可以使用外,還要
被其它文件使用。因此,必須將全程變數通知每一個程序模塊文件,此時可用
extern來說明。
四、register
register稱為寄存器變數。它只能用於整型和字元型變數。定義符register說
明的變數被TurboC2.0存儲在CPU的寄存器中,而不是象普通的變數那樣存儲在內
存中,這樣可以提高運算速度。但是TurboC2.0隻允許同時定義兩個寄存器變數,
一旦超過兩個,編譯程序會自動地將超過限制數目的寄存器變數當作非寄存器變數
來處理。因此,寄存器變數常用在同一變數名頻繁出現的地方。
另外,寄存器變數只適用於局部變數和函數的形式參數,它屬於auto型變數,
因此,不能用作全程變數。定義一個整型寄存器變數可寫成:
registerinta;
對於以上所介紹的變數類型和變數存儲類型將會在以後的學習中,通過例行程
序中的定義、使用來逐漸加深理解。