本節書摘來自華章出版社《迷人的8051單片機》一書中的第3章,第3.6節,作者高顯生,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
我們前面介紹的資料類型有字元型、整型、實型等,它們都屬于基本的資料類型。c語言中還支援構造類型的資料,它是由基本資料類型按照一定的規則組合而成的,構造類型資料主要包括數組、結構體和共用體等。
簡單地說,數組就是同一類變量的有序集合。數組同普通變量一樣,要先定義後使用,定義數組的方法如下:
<code>資料類型 數組名 [常量表達式] ;</code>
定義數組時,“資料類型”是指數組中各個單元的類型,數組隻能是同一類型的資料單元的集合;“數組名”是整個數組的辨別,命名方法同變量命名方法相同;“常量表達式”表示數組中單元的個數,它必須用括号括起,括号裡的數不能是變量,隻能是常量。定義數組的方法可以參考以下代碼:
<code>unsigned int count [10] ;</code>
以上代碼定義了無符号整型數組count,它有10個資料單元。在使用數組時,用數組名加下标的方法加以引用,具體方法可以參考以下代碼:
<code>count [3] = x;</code>
意思是将變量“x”的值賦給數組count的第四個元素。這裡需要注意的是,數組的下标是從0開始的,“count[0]”就代表數組中的第一個資料單元,“count[9]”代表的是其最後的一個資料單元。我們也可以在定義數組的時候為其賦初值,定義這種數組的格式如下:
在賦初值的數組中,方括号内的常量表達式是可以省略的,這時數組中資料單元的個數就由實際初值的個數決定。“{}”括号内是數組各單元的初值,兩個初值間用逗号分隔。定義賦初值的數組可以參考以下代碼:
上面介紹的數組是一維的,數組也可以是多元的,關于多元數組在這裡不做詳細介紹,需要時可以參考c語言的相關書籍。
結構體是在一個統一的名稱下,組合在一起的變量的集合。結構體中的每個變量都稱為結構體的成員,每個成員之間的資料類型可以不同,結構體變量的總長度等于結構體中每個成員長度的總和。定義結構體的格式如下:
例如,我們要建構一個學生情況登記表,可以用下面的方法定義結構體:
在上面的結構體定義中,struct是結構體類型辨別,是c語言的關鍵字。結構體的名稱是student,這個結構體由3個成員構成,即num、name和age。“{}”結束後的student1、student2定義的是兩個結構體變量,最後的“;”是結構體的類型定義結束符。 結構體不能與其他基礎型的變量間互相指派,對結構體變量的引用,包括指派、運算等都是通過結構體變量的成員來實作的,引用上面定義的結構體變量成員的方法如下:
共用體與結構體有相似之處,但共用體的成員全部共用相同的存儲空間,一個共用體變量的長度等于各成員中最長的成員長度。實際上,共用體是一個在不同時間儲存不同類型資料的變量,這些不同類型的資料共用一個存儲空間,賦入新值則會沖掉舊值。定義共用體的格式如下:
例如,我們要定義一個名稱為number的共用體可以參考以下代碼。
在這個共用體的類型定義中,union是共用體類型的辨別,也是c語言的關鍵字。共用體的名稱是number,這個共用體由3個成員構成,即a、b和c。“{}”結束後的u1、u2、u3定義的是3個共用體變量。共用體變量的成員在記憶體中占用同一首位址的空間,其引用方法如下:
本章至此已經将c語言的基礎知識部分進行了概括說明,閱讀完本章内容,相信你對c語言及c程式的開發會有一個基本的認識。在使用keil c51編譯器為8051單片機開發c程式時, c51編譯器會針對8051單片機的特點對編譯器進行一些優化,本書将在後面的章節中對keil c51編譯器的特色部分進行介紹。