鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ 6.1 C 語(yǔ)言數(shù)組
2.1 單片機(jī)內(nèi)部資源(內(nèi)部結(jié)構(gòu))
5.1 單片機(jī)邏輯電路與邏輯運(yùn)算
6.1 C 語(yǔ)言數(shù)組
5.7 單片機(jī)數(shù)碼管的靜態(tài)顯示
4.8 單片機(jī) LED 流水燈程序[詳細(xì)]
6.7 單片機(jī)中斷的優(yōu)先級(jí)
5.2 單片機(jī)定時(shí)器介紹
1. 如何學(xué)習(xí)單片機(jī)
1.3 單片機(jī)學(xué)習(xí)的準(zhǔn)備工作
4.3 C 語(yǔ)言基本運(yùn)算符
5.5 單片機(jī)中 LED 數(shù)碼管的介紹
2.6 第一個(gè)單片機(jī)程序(C 語(yǔ)言編寫(xiě))
3.5 單片機(jī)中 74HC138 三八譯碼器的應(yīng)用
3.2 單片機(jī)中去耦電容的應(yīng)用
6.4 單片機(jī)數(shù)碼管動(dòng)態(tài)顯示程序[帶解釋]
1.5 Keil uVision4簡(jiǎn)單使用教程
第一章問(wèn)題匯總
1.2 如何學(xué)習(xí)單片機(jī)
4.4 C 語(yǔ)言 for 循環(huán)語(yǔ)句
6.5 單片機(jī)數(shù)碼管顯示消隱
單片機(jī)上的發(fā)光二極管(LED 燈)
5. 單片機(jī)定時(shí)器與數(shù)碼管基礎(chǔ)
5.3 單片機(jī)定時(shí)器的寄存器
5.6 單片機(jī)數(shù)碼管的真值表
6.2 C 語(yǔ)言 if 語(yǔ)句
3.3 三極管的的概念及其工作原理
4. C 語(yǔ)言基礎(chǔ)及流水燈的實(shí)現(xiàn)
點(diǎn)亮你的 LED 燈
4.6 C 語(yǔ)言函數(shù)的簡(jiǎn)單介紹
2.4 51單片機(jī)特殊功能寄存器和位定義
6.6 單片機(jī)中斷系統(tǒng)
3.1 電磁干擾 EMI
4.1 二進(jìn)制、十進(jìn)制和十六進(jìn)制
4.5 C 語(yǔ)言 while 循環(huán)語(yǔ)句
3. 單片機(jī)硬件基礎(chǔ)知識(shí)學(xué)習(xí)
2.5 使用 Keil uVision 新建一個(gè)工程
1.4 單片機(jī)開(kāi)發(fā)環(huán)境搭建--Keil uVision4安裝教程
4.7 單片機(jī)延時(shí)方法(Keil 軟件延時(shí))
6. 單片機(jī)的中斷與數(shù)碼管動(dòng)態(tài)顯示
3.6 單片機(jī) LED 燈閃爍程序
6.3 C 語(yǔ)言 switch 語(yǔ)句
1.1 學(xué)習(xí)什么單片機(jī)
4.2 C 語(yǔ)言變量類(lèi)型和范圍
5.4 單片機(jī)中定時(shí)器的應(yīng)用
2.7 將程序下載到單片機(jī)
3.4 單片機(jī)中三極管的應(yīng)用
2.2 單片機(jī)最小系統(tǒng)[配圖][超詳細(xì)]

6.1 C 語(yǔ)言數(shù)組

數(shù)組的基本概念

第四章已經(jīng)學(xué)過(guò)變量的基本類(lèi)型,比如 char、int 等等。這種類(lèi)型描述的都是單個(gè)具有特定意義的數(shù)據(jù),當(dāng)我們要處理?yè)碛型?lèi)意義但是卻包含很多個(gè)數(shù)據(jù)的時(shí)候,就可以用到數(shù)組了,比如我們上節(jié)課那個(gè)數(shù)碼管的真值表,就是用一個(gè)數(shù)組來(lái)表達(dá)的。

從概念上講,數(shù)組是具有相同數(shù)據(jù)類(lèi)型的有序數(shù)據(jù)的組合,一般來(lái)講,數(shù)組定義后滿(mǎn)足以下三個(gè)條件。

  • 具有相同的數(shù)據(jù)類(lèi)型;
  • 具有相同的名字;
  • 在存儲(chǔ)器中是被連續(xù)存放的。

比如我們上節(jié)課定義的那個(gè)數(shù)碼管真值表,如果我們把關(guān)鍵字 code 去掉,數(shù)組元素將被保存在 RAM 中,在程序中可讀可寫(xiě),同時(shí)我們也可以在中括號(hào)里邊標(biāo)明這個(gè)數(shù)組所包含的元素個(gè)數(shù),比如:

unsigned char LedChar[16] = {
    0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};

在這個(gè)數(shù)組中的每個(gè)值都稱(chēng)之為數(shù)組的一個(gè)元素,這些元素都具備相同的數(shù)據(jù)類(lèi)型就是 unsigned char 型,他們有一個(gè)共同的名字 LedChar,不管放到 RAM 中還是 FLASH 中,他們都是存放在一塊連續(xù)的存儲(chǔ)空間里的。

有一點(diǎn)要特別注意,這個(gè)數(shù)組一共有16(中括號(hào)里面的數(shù)值)個(gè)元素,但是數(shù)組的單個(gè)元素的表達(dá)方式——下標(biāo)是從0開(kāi)始,因此實(shí)際上上邊這個(gè)數(shù)組的首個(gè)元素 LedChar[0]的值是 0xC0,而 LedChar[15]的值是 0x8E,下標(biāo)從0到15一共是16個(gè)元素。

LedChar 這個(gè)數(shù)組只有一個(gè)下標(biāo),我們稱(chēng)之為一維數(shù)組,還有兩個(gè)下標(biāo)和多個(gè)下標(biāo)的,我們稱(chēng)之為二維數(shù)組和多維數(shù)組。比如 unsigned char a[2][3];表示這是一個(gè)2行3列的二維數(shù)組。在大多數(shù)情況下我們使用的是一維數(shù)組,對(duì)于初學(xué)來(lái)說(shuō),我們先來(lái)研究一維數(shù)組,多維數(shù)組等遇到了再來(lái)了解。

數(shù)組的聲明

一維數(shù)組的聲明格式如下:

    數(shù)據(jù)類(lèi)型  數(shù)組名 [數(shù)組長(zhǎng)度];

1) 數(shù)組的數(shù)據(jù)類(lèi)型聲明的是該數(shù)組的每個(gè)元素的類(lèi)型,即一個(gè)數(shù)組中的元素具有相同的數(shù)據(jù)類(lèi)型。

2) 數(shù)組名的聲明要符合 C 語(yǔ)言固定的標(biāo)識(shí)符的聲明要求,只能由字母、數(shù)字、下劃線(xiàn)這三種符號(hào)組成,且第一個(gè)字符只能是字母或者下劃線(xiàn)。

3) 方括號(hào)中的數(shù)組長(zhǎng)度是一個(gè)常量或常量表達(dá)式,并且必須是正整數(shù)。

數(shù)組的初始化

數(shù)組在進(jìn)行聲明的同時(shí)可以進(jìn)行初始化操作,格式如下:

    數(shù)據(jù)類(lèi)型  數(shù)組名 [數(shù)組長(zhǎng)度] = {初值列表};

還是以上節(jié)課我們用的數(shù)碼管的真值表為例來(lái)講解注意事項(xiàng)。

unsigned char LedChar[16] = {
    0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};

1) 初值列表里的數(shù)據(jù)之間要用逗號(hào)隔開(kāi);

2) 初值列表里的初值的數(shù)量必須等于或小于數(shù)組長(zhǎng)度,當(dāng)小于數(shù)組長(zhǎng)度時(shí),數(shù)組的后邊沒(méi)有賦初值的元素由系統(tǒng)自動(dòng)賦值為0。

3) 若給數(shù)組的所有元素都賦初值,那么可以省略數(shù)組的長(zhǎng)度,上節(jié)課的例子中我們實(shí)際上已經(jīng)省略了數(shù)組的長(zhǎng)度。

4) 系統(tǒng)為數(shù)組分配連續(xù)的存儲(chǔ)單元的時(shí)候,數(shù)組元素的相對(duì)次序由下標(biāo)來(lái)決定,就是說(shuō) LedChar[0]、LedChar[1]??LedChar[15]是按照順序緊挨著依次排下來(lái)的。

數(shù)組的使用和賦值

在 C 語(yǔ)言程序中,是不能一次使用整個(gè)數(shù)組的,只能使用數(shù)組的單個(gè)元素。一個(gè)數(shù)組元素相當(dāng)于一個(gè)變量,使用數(shù)組元素的時(shí)候與使用相同數(shù)據(jù)類(lèi)型的變量的方法是一樣的。比如 LedChar 這個(gè)數(shù)組,如果沒(méi)加 code 關(guān)鍵字,那么它可讀可寫(xiě),我們可以寫(xiě)成 a = LedChar[0]這樣來(lái)把數(shù)組的一個(gè)元素的值送個(gè) a 這個(gè)變量,也可以寫(xiě)成 LedChar[0] = a 這樣把 a 這個(gè)變量的值送給數(shù)組中的一個(gè)元素,以下三點(diǎn)要注意:

引用數(shù)組的時(shí)候,那個(gè)方括號(hào)里的數(shù)字代表的是數(shù)組元素的下標(biāo),而數(shù)組初始化的時(shí)候方括號(hào)里的數(shù)字代表的是這個(gè)數(shù)組中元素的總數(shù) 。 數(shù)組元素的方括號(hào)里的下標(biāo)可以是整型常數(shù),整型變量或者表達(dá)式,而數(shù)組初始化的時(shí)候方括號(hào)里的數(shù)字必須是常數(shù)不能是變量。

數(shù)組整體賦值只能在初始化的時(shí)候進(jìn)行,程序執(zhí)行代碼中只能對(duì)單個(gè)元素賦值。