- C語言入門很輕松(微課超值版)
- 云尚科技編著
- 1434字
- 2022-07-29 14:43:38
3.4 變量的存儲類型
存儲類定義C語言程序中變量或函數(shù)的范圍(可見性)和生命周期,這些說明符放置在它們所修飾的類型之前。在C語言程序中,可以通過存儲類修飾符來告訴編譯器要處理什么樣的類型變量,具體有以下4種:自動型(auto)、靜態(tài)型(static)、寄存器型(register)和外部型(extern)。
3.4.1 自動型變量
自動型(auto)變量是所有局部變量默認的存儲類型。在變量前添加auto關(guān)鍵字,是聲明該局部變量為自動的,這就意味著每次執(zhí)行到定義該變量的時候,都會產(chǎn)生一個新的變量,并且對其重新進行初始化,另外,auto只能用在函數(shù)內(nèi),即auto只能修飾局部變量。
例如:

該語句中,a是形參,b、c是自動變量,對c賦初值100。執(zhí)行完函數(shù)f()后,自動釋放a、b、c所占的存儲單元。
☆大牛提醒☆
關(guān)鍵字auto可以省略,auto不寫則隱含定為“自動存儲類別”,屬于動態(tài)存儲方式。
【例3.11】編寫程序,定義自動型變量,通過多次調(diào)用函數(shù)輸出運行結(jié)果(源代碼\ch03\3.11.txt)。


圖3-12 例3.11的程序運行結(jié)果
程序運行結(jié)果如圖3-12所示。
在本實例中,首先在函數(shù)fun()中定義一個自動型的整型變量add,在其中對變量進行加1操作。之后在主函數(shù)main()中通過顯示的提示語句,可以看到調(diào)用2次函數(shù)fun()并輸出,從結(jié)果中可以看到函數(shù)fun()中定義整型變量時系統(tǒng)會為其分配內(nèi)存空間,在函數(shù)調(diào)用結(jié)束時自動釋放這些存儲空間。
3.4.2 靜態(tài)型變量
靜態(tài)型(static)變量指示編譯器在程序的生命周期內(nèi)保持局部變量的存在,而不需要在每次它進入和離開作用域時進行創(chuàng)建和銷毀。因此,使用static修飾符修飾局部變量可以在函數(shù)調(diào)用之間保持局部變量的值。
static修飾符也可以應(yīng)用于全局變量,當static修飾符修飾全局變量時,會使變量的作用域限制在聲明它的文件內(nèi)。全局聲明的一個靜態(tài)型變量或方法可以被任何函數(shù)或方法調(diào)用,只要這些方法出現(xiàn)在跟靜態(tài)型變量或方法同一個文件中。
【例3.12】編寫程序,定義靜態(tài)型變量,通過多次調(diào)用函數(shù)輸出運行結(jié)果(源代碼\ch03\3.12.txt)。


圖3-13 例3.12的程序運行結(jié)果
程序運行結(jié)果如圖3-13所示。
在本實例中,使用了靜態(tài)型變量。首先在函數(shù)fun()中定義一個靜態(tài)型的整型變量add,在其中對變量進行加1操作。之后在主函數(shù)main()中通過顯示的提示語句,可以看到調(diào)用2次函數(shù)fun()并輸出,從結(jié)果中可以發(fā)現(xiàn)靜態(tài)變量的值保持不變,因此2次調(diào)用的結(jié)果不一樣。
3.4.3 寄存器型變量
寄存器型(register)變量用于定義存儲在寄存器中而不是RAM中的局部變量。這意味著變量的最大尺寸等于寄存器的大小(通常是一個詞),且不能對它應(yīng)用一元'&'運算符,因為它沒有內(nèi)存位置,這樣的好處是可以提高程序的運行速度。語法格式如下:
{ register int miles; }
☆大牛提醒☆
寄存器只用于需要快速訪問的變量,比如計數(shù)器。另外,定義register并不意味著變量將被存儲在寄存器中,而是意味著變量可能存儲在寄存器中,這取決于硬件的限制。
【例3.13】編寫程序,定義寄存器型變量來修飾整型變量,最后輸出運行結(jié)果(源代碼\ch03\3.13.txt)。


圖3-14 例3.13的程序運行結(jié)果
程序運行結(jié)果如圖3-14所示。
3.4.4 外部型變量
外部型(extern)變量用于提供一個全局變量的引用,全局變量對所有的程序文件都是可見的。當用戶使用外部型變量時,對于無法初始化的變量,會把變量名指向一個之前定義過的存儲位置。extern修飾符通常用于兩個或多個文件共享相同的全局變量或函數(shù)的時候。
【例3.14】編寫程序,定義外部型變量,調(diào)用兩個文件中共享的數(shù)值,并輸出運行結(jié)果(源代碼\ch03\3.14.txt)。

程序運行結(jié)果如圖3-15所示。

圖3-15 例3.14的程序運行結(jié)果
在本實例中,使用了外部型變量。首先在Extern1文件中定義了一個外部型變量count,并為其賦值為100,然后在Extern2文件中使用extern關(guān)鍵字聲明了已經(jīng)在第1個文件中定義的count變量,最后將其變量值顯示到控制臺。
- UI圖標創(chuàng)意設(shè)計
- MySQL數(shù)據(jù)庫管理實戰(zhàn)
- Reporting with Visual Studio and Crystal Reports
- Python自然語言處理實戰(zhàn):核心技術(shù)與算法
- CockroachDB權(quán)威指南
- MySQL 8從入門到精通(視頻教學版)
- Linux核心技術(shù)從小白到大牛
- ASP.NET Core Essentials
- iOS應(yīng)用逆向工程(第2版)
- Windows Server 2016 Automation with PowerShell Cookbook(Second Edition)
- Zabbix Performance Tuning
- Mapping with ArcGIS Pro
- Instant AppFog
- KnockoutJS Blueprints
- Visual FoxPro程序設(shè)計教程(第3版)