第四章已經(jīng)學過變量的基本類型,比如 char、int 等等。這種類型描述的都是單個具有特定意義的數(shù)據(jù),當我們要處理擁有同類意義但是卻包含很多個數(shù)據(jù)的時候,就可以用到數(shù)組了,比如我們上節(jié)課那個數(shù)碼管的真值表,就是用一個數(shù)組來表達的。
從概念上講,數(shù)組是具有相同數(shù)據(jù)類型的有序數(shù)據(jù)的組合,一般來講,數(shù)組定義后滿足以下三個條件。
比如我們上節(jié)課定義的那個數(shù)碼管真值表,如果我們把關(guān)鍵字 code 去掉,數(shù)組元素將被保存在 RAM 中,在程序中可讀可寫,同時我們也可以在中括號里邊標明這個數(shù)組所包含的元素個數(shù),比如:
unsigned char LedChar[16] = {
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
在這個數(shù)組中的每個值都稱之為數(shù)組的一個元素,這些元素都具備相同的數(shù)據(jù)類型就是 unsigned char 型,他們有一個共同的名字 LedChar,不管放到 RAM 中還是 FLASH 中,他們都是存放在一塊連續(xù)的存儲空間里的。
有一點要特別注意,這個數(shù)組一共有16(中括號里面的數(shù)值)個元素,但是數(shù)組的單個元素的表達方式——下標是從0開始,因此實際上上邊這個數(shù)組的首個元素 LedChar[0]的值是 0xC0,而 LedChar[15]的值是 0x8E,下標從0到15一共是16個元素。
LedChar 這個數(shù)組只有一個下標,我們稱之為一維數(shù)組,還有兩個下標和多個下標的,我們稱之為二維數(shù)組和多維數(shù)組。比如 unsigned char a[2][3];表示這是一個2行3列的二維數(shù)組。在大多數(shù)情況下我們使用的是一維數(shù)組,對于初學來說,我們先來研究一維數(shù)組,多維數(shù)組等遇到了再來了解。
一維數(shù)組的聲明格式如下:
數(shù)據(jù)類型 數(shù)組名 [數(shù)組長度];
1) 數(shù)組的數(shù)據(jù)類型聲明的是該數(shù)組的每個元素的類型,即一個數(shù)組中的元素具有相同的數(shù)據(jù)類型。
2) 數(shù)組名的聲明要符合 C 語言固定的標識符的聲明要求,只能由字母、數(shù)字、下劃線這三種符號組成,且第一個字符只能是字母或者下劃線。
3) 方括號中的數(shù)組長度是一個常量或常量表達式,并且必須是正整數(shù)。
數(shù)組在進行聲明的同時可以進行初始化操作,格式如下:
數(shù)據(jù)類型 數(shù)組名 [數(shù)組長度] = {初值列表};
還是以上節(jié)課我們用的數(shù)碼管的真值表為例來講解注意事項。
unsigned char LedChar[16] = {
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
1) 初值列表里的數(shù)據(jù)之間要用逗號隔開;
2) 初值列表里的初值的數(shù)量必須等于或小于數(shù)組長度,當小于數(shù)組長度時,數(shù)組的后邊沒有賦初值的元素由系統(tǒng)自動賦值為0。
3) 若給數(shù)組的所有元素都賦初值,那么可以省略數(shù)組的長度,上節(jié)課的例子中我們實際上已經(jīng)省略了數(shù)組的長度。
4) 系統(tǒng)為數(shù)組分配連續(xù)的存儲單元的時候,數(shù)組元素的相對次序由下標來決定,就是說 LedChar[0]、LedChar[1]??LedChar[15]是按照順序緊挨著依次排下來的。
在 C 語言程序中,是不能一次使用整個數(shù)組的,只能使用數(shù)組的單個元素。一個數(shù)組元素相當于一個變量,使用數(shù)組元素的時候與使用相同數(shù)據(jù)類型的變量的方法是一樣的。比如 LedChar 這個數(shù)組,如果沒加 code 關(guān)鍵字,那么它可讀可寫,我們可以寫成 a = LedChar[0]這樣來把數(shù)組的一個元素的值送個 a 這個變量,也可以寫成 LedChar[0] = a 這樣把 a 這個變量的值送給數(shù)組中的一個元素,以下三點要注意:
引用數(shù)組的時候,那個方括號里的數(shù)字代表的是數(shù)組元素的下標,而數(shù)組初始化的時候方括號里的數(shù)字代表的是這個數(shù)組中元素的總數(shù) 。 數(shù)組元素的方括號里的下標可以是整型常數(shù),整型變量或者表達式,而數(shù)組初始化的時候方括號里的數(shù)字必須是常數(shù)不能是變量。
數(shù)組整體賦值只能在初始化的時候進行,程序執(zhí)行代碼中只能對單個元素賦值。