儲存類定義c程式中變數和/或函式的範圍(可見性)和生命週期。它們位於它們修改的型別之前。我們在c程式中有四種不同的儲存變數
自動·暫存器
靜態的·外部
自動儲存類
該自動儲存類是所有區域性變數的預設儲存類。
int mount;
auto int month;
上面的示例在同一儲存類中定義了兩個變數。'auto'只能在函式中使用,即區域性變數。
暫存器儲存類
該暫存器儲存類是用來定義應當被儲存在暫存器中,而不是ram區域性變數。這意味著變數的最大大小等於暫存器大小(通常是乙個單詞),並且不能將一元「&」運算子應用於它(因為它沒有記憶體位置)。
register int miles;
該暫存器只應用於需要快速訪問的變數,例如計數器。還應注意,定義「暫存器」並不意味著變數將儲存在暫存器中。這意味著它可能會根據硬體和實現限制儲存在暫存器中。
靜態儲存類
該靜態儲存類指示編譯器在程式而不是建立和每次進入和超出範圍時摧毀它的壽命時間內保持乙個區域性變數存在。因此,使區域性變數靜態允許它們在函式呼叫之間維護它們的值。
靜態修飾符也可以應用於全域性變數。完成此操作後,它會將該變數的範圍限制為宣告它的檔案。
在c程式設計中,當靜態用於全域性變數時,它只會導致該成員的所有物件共享該成員的乙個副本。
#include
/* function declaration */
void func(void);
static int count = 5; /* global variable */
int main {
while(count--) {
func;
return 0;
return 0;
/* function definition */
void func( void ) {
static int i = 5; /* local static variable */
i++;
printf("i is %d and count is %d ", i, count);
編譯並執行上述**時,會產生以下結果 -
i is 6 and count is 4
i is 7 and count is 3
i is 8 and count is 2
i is 9 and count is 1
i is 10 and count is 0
外部儲存類
該的extern儲存類是用來給乙個全域性變數,那就是所有程式檔案可見的參考。當您使用'extern'時,無法初始化變數,但是它將變數名稱指向先前已定義的儲存位置。
當您有多個檔案並且定義了乙個全域性變數或函式(也將在其他檔案中使用)時,extern將在另乙個檔案中用於提供已定義變數或函式的引用。僅僅為了理解,extern用於在另乙個檔案中宣告全域性變數或函式。
當有兩個或多個檔案共享相同的全域性變數或函式時,最常用的是外部修飾符,如下所述。
第乙個檔案:main.c
#include
int count ;
extern void write_extern;
int main {
count = 5;
write_extern;
return 0;
第二個檔案:support.c
#include
extern int count;
void write_extern(void) {
printf("count is %d ", count);
這裡,extern用於在第二個檔案中宣告count,因為它在第乙個檔案main.c中定義了它。現在,編譯這兩個檔案如下 -
$gcc main.c support.c
它將生成可執行程式a.out。執行該程式時,會產生以下結果 -
count is 5
c語言程式設計中的一點小技巧(老司機專用)
這是乙個十分簡單的程式,執行以後結果是 可以看出這個程式是沒有任何問題的,可是當這裡的 編成 時會發生什麼情況呢?程式依然執行,可是不論我的結果是什麼輸出的都是haha,這就是因為關係運算子變成了賦值,不論i的值是多少,條件都為真,所以你不論輸入什麼都會得到相同的結果。這時候你肯定說了,這樣的問題要...
如何快速掌握一門程式語言
出來工作了一段時間,也接觸過了各式各樣的程式語言。突然想對 如何快速掌握一門程式語言 這個話題做下總結。搭建開發環境 有些語言這一步就不想要了,比如shell 學習語法,讀相關書籍或者網上找教程 比如通過w3cschool的php教程,基本就能掌握php的語言 了解相關的工具 例如c 開發的gdb ...
《C語言程式設計》掌握內容(零)
一 c程式的基本結構 1.c 語言的特點以及 c程式的基本組成 二 常量 變數和表示式 1.常量 數字常量 字元常量和字串字面量 2.變數 變數名和變數型別,變數的賦值和型別轉換 3.算術表示式 算術運算子 增量 自增 和減量 自減 運算子 位運算和復合賦值運算子 4.強制型別轉換 5.資料輸入 輸...