計(jì)算機(jī)程序基礎(chǔ)教程(07):C語(yǔ)言 - 數(shù)組
【數(shù)組】
數(shù)組用于存儲(chǔ)多個(gè)類型相同的數(shù)據(jù),每個(gè)數(shù)組元素都有一個(gè)內(nèi)部編號(hào),稱為下標(biāo),下標(biāo)從0開(kāi)始分配,第一個(gè)元素下標(biāo)為0,數(shù)組元素通過(guò)“數(shù)組名+下標(biāo)”的方式調(diào)用。
若指定的下標(biāo)超過(guò)數(shù)組長(zhǎng)度,則會(huì)造成數(shù)組越界訪問(wèn),為了避免這種情況,應(yīng)該使用if語(yǔ)句判斷下標(biāo)的值,禁止超過(guò)數(shù)組長(zhǎng)度。
?● 多維數(shù)組
二維數(shù)組用于將多個(gè)類型、長(zhǎng)度相同的一維數(shù)組集中存儲(chǔ),可以認(rèn)為二維數(shù)組的元素是一維數(shù)組,三維數(shù)組的元素是二維數(shù)組,以此類推,還可以有四維數(shù)組。
有些教材將二維數(shù)組比喻為一張表,三維數(shù)組比喻為一個(gè)立體結(jié)構(gòu),其實(shí)這樣解釋是不準(zhǔn)確的,甚至基于這個(gè)思路就無(wú)法理解三維以上的數(shù)組,多維數(shù)組的存儲(chǔ)也是線性的,所有的數(shù)組元素全部依次排列在虛擬地址中。
【字符串】
字符串是一個(gè)元素類型為char的數(shù)組,用于存儲(chǔ)字符編碼,char類型數(shù)組的賦值方式有些特殊,他可以像普通數(shù)組那樣使用數(shù)值為元素賦值,也可以使用字符為元素賦值,編譯器會(huì)自動(dòng)轉(zhuǎn)換為對(duì)應(yīng)的字符編碼。
使用字符串時(shí),字符編碼往往不會(huì)占用數(shù)組的全部長(zhǎng)度,字符編碼使用的數(shù)組長(zhǎng)度稱為有效長(zhǎng)度,為了確認(rèn)字符串的有效長(zhǎng)度,C語(yǔ)言規(guī)定在有效長(zhǎng)度之后添加一個(gè)空字符(字符編碼為0),通過(guò)空字符的位置判斷字符串的有效長(zhǎng)度。
【結(jié)構(gòu)體】
結(jié)構(gòu)體用于將一些類型不同的數(shù)據(jù)集中存儲(chǔ),結(jié)構(gòu)體成員長(zhǎng)度不同,所以不能像數(shù)組那樣通過(guò)編號(hào)調(diào)用,每個(gè)結(jié)構(gòu)體成員都有自己的名稱,使用“結(jié)構(gòu)體名+成員名”的方式調(diào)用。
結(jié)構(gòu)體的定義方式與數(shù)組不同,結(jié)構(gòu)體需要首先指定內(nèi)部所有數(shù)據(jù)的類型和名稱,此行為稱為聲明結(jié)構(gòu)體,之后通過(guò)聲明定義結(jié)構(gòu)體實(shí)例。
先聲明后定義的方式,可以簡(jiǎn)化定義多個(gè)同類型結(jié)構(gòu)體的代碼,無(wú)需重復(fù)指定結(jié)構(gòu)體成員的類型。
【共用體】
共用體類似結(jié)構(gòu)體,將多個(gè)類型不同的數(shù)據(jù)集中存儲(chǔ),但是這些數(shù)據(jù)占用同一段存儲(chǔ)空間,同一時(shí)間只能使用其中一個(gè),防止混亂,共用體的長(zhǎng)度為其中最大成員的長(zhǎng)度。
這里的成員類型不同指的是存儲(chǔ)方式的不同,比如:有符號(hào)整數(shù)、無(wú)符號(hào)整數(shù)、浮點(diǎn)數(shù)、數(shù)組、結(jié)構(gòu)體,而非存儲(chǔ)方式相同、長(zhǎng)度不同的數(shù)據(jù),若多個(gè)存儲(chǔ)方式相同而長(zhǎng)度不同的數(shù)據(jù)使用共用體存儲(chǔ),本質(zhì)上是使用其中長(zhǎng)度最大的數(shù)據(jù)作為變量,與直接使用一個(gè)變量的功能完全相同。
因?yàn)楦呒?jí)編程語(yǔ)言無(wú)法像匯編那樣使用指令隨意操作一段內(nèi)存,所以C語(yǔ)言提供了共用體,用于實(shí)現(xiàn)一段存儲(chǔ)空間在多個(gè)數(shù)據(jù)之間的重用,使用共用體的優(yōu)勢(shì)有以下兩點(diǎn):
1.節(jié)省內(nèi)存,若多個(gè)數(shù)據(jù)不會(huì)同時(shí)使用,可以將其定義為共用體,對(duì)于內(nèi)存很小的計(jì)算機(jī)來(lái)說(shuō)非常有用。
2.讓一個(gè)數(shù)據(jù)的類型可以在整數(shù)、浮點(diǎn)數(shù)、數(shù)組、結(jié)構(gòu)體之間進(jìn)行轉(zhuǎn)換,當(dāng)你不確定一個(gè)數(shù)據(jù)的類型時(shí),可以使用共用體接收它,之后轉(zhuǎn)換為需要的類型。
共用體的使用方式與結(jié)構(gòu)體類似,也是先聲明后使用。
【枚舉】
枚舉,意為一一列舉,將一個(gè)變量可以使用的值全部列舉出來(lái),之后只能使用這些值中的一個(gè)進(jìn)行賦值,用于限制一個(gè)變量的取值范圍。
枚舉變量的類型默認(rèn)為int,并且不能修改。