6 1 C語言陣列

2021-09-10 06:05:38 字數 1841 閱讀 9563

第四章已經學過變數的基本型別,比如 char、int 等等。這種型別描述的都是單個具有特定意義的資料,當我們要處理擁有同類意義但是卻包含很多個資料的時候,就可以用到陣列了,比如我們上節課那個數碼管的真值表,就是用乙個陣列來表達的。

從概念上講,陣列是具有相同資料型別的有序資料的組合,一般來講,陣列定義後滿足以下三個條件。

具有相同的資料型別;

具有相同的名字;

在儲存器中是被連續存放的。

比如我們上節課定義的那個數碼管真值表,如果我們把關鍵字 code 去掉,陣列元素將被儲存在 ram 中,在程式中可讀可寫,同時我們也可以在中括號裡邊標明這個陣列所包含的元素個數,比如:

unsigned char ledchar[16] = ;
在這個陣列中的每個值都稱之為陣列的乙個元素,這些元素都具備相同的資料型別就是unsigned char 型,他們有乙個共同的名字 ledchar,不管放到 ram 中還是 flash 中,他們都是存放在一塊連續的儲存空間裡的。

有一點要特別注意,這個陣列一共有 16(中括號裡面的數值)個元素,但是陣列的單個元素的表達方式——下標是從 0 開始,因此實際上上邊這個陣列的首個元素 ledchar[0]的值是 0xc0,而 ledchar[15]的值是 0x8e,下標從 0 到 15 一共是 16 個元素。

ledchar 這個陣列只有乙個下標,我們稱之為一維陣列,還有兩個下標和多個下標的,我們稱之為二維陣列和多維陣列。比如 unsigned char a[2][3];表示這是乙個 2 行 3 列的二維陣列。在大多數情況下我們使用的是一維陣列,對於初學來說,我們先來研究一維陣列,多維陣列等遇到了再來了解。

一維陣列的宣告格式如下:

資料型別 陣列名 [陣列長度];

陣列的資料型別宣告的是該陣列的每個元素的型別,即乙個陣列中的元素具有相同的資料型別。

陣列名的宣告要符合 c 語言固定的識別符號的宣告要求,只能由字母、數字、下劃線這三種符號組成,且第乙個字元只能是字母或者下劃線。

方括號中的陣列長度是乙個常量或常量表示式,並且必須是正整數。

陣列的初始化

陣列在進行宣告的同時可以進行初始化操作,格式如下:

資料型別 陣列名 [陣列長度] = ;

還是以上節課我們用的數碼管的真值表為例來講解注意事項。

unsigned char ledchar[16] = ;
初值列表裡的資料之間要用逗號隔開;

初值列表裡的初值的數量必須等於或小於陣列長度,當小於陣列長度時,陣列的後邊沒有賦初值的元素由系統自動賦值為 0。

若給陣列的所有元素都賦初值,那麼可以省略陣列的長度,上節課的例子中我們實際上已經省略了陣列的長度。

系統為陣列分配連續的儲存單元的時候,陣列元素的相對次序由下標來決定,就是說 ledchar[0]、ledchar[1]„„ledchar[15]是按照順序緊挨著依次排下來的。

在 c 語言程式中,是不能一次使用整個陣列的,只能使用陣列的單個元素。乙個陣列元素相當於乙個變數,使用陣列元素的時候與使用相同資料型別的變數的方法是一樣的。比如ledchar 這個陣列,如果沒加 code 關鍵字,那麼它可讀可寫,我們可以寫成 a = ledchar[0]這樣來把陣列的乙個元素的值送個 a 這個變數,也可以寫成 ledchar[0] = a 這樣把 a 這個變數的值送給陣列中的乙個元素,以下三點要注意:

- 引用陣列的時候,那個方括號裡的數字代表的是陣列元素的下標,而陣列初始化的時候方括號裡的數字代表的是這個陣列中元素的總數。

- 陣列元素的方括號裡的下標可以是整型常數,整型變數或者表示式,而陣列初始化的時候方括號裡的數字必須是常數不能是變數。

- 陣列整體賦值只能在初始化的時候進行,程式執行**中只能對單個元素賦值。

61 C 型別轉換

用於類層次結構中基類 父類 和派生類 子類 之間指標或引用的轉換。用於基本資料型別之間的轉換,如把int轉換成char,把char轉換成int。這種轉換的安全性也要開發人員來保證 靜態轉換 static cast 使用方式 static cast 目標型別 原始資料 可以進行基礎資料型別轉換 父與子...

6 1 C語言預處理理論

1 原始碼.c 預處理 預處理過的.i原始檔 編譯 彙編檔案.s 彙編 目標檔案.o 鏈結 elf可執行程式 2 預處理用的是預處理器,編譯用編譯器,彙編用彙編器,鏈結用鏈結器,這幾個工具再加上其它一些額外的會用到的可用工具,合起來叫編譯工具鏈。gcc就是乙個編譯工具鏈。1 編譯器本身的主要目的是編...

牛客練習賽61 C 四個選項

題目 稍微想下就應該知道,樣例是最大的方案數,40萬 並不是很大,可以dfs 蒐一波。對於答案相同的題目,其實無非就是 關係,我們可以用陣列now i 將其 比如 1,3,8是同一答案,可以用並查集的思想,然後讓其中乙個 例如 now 1 3,now 3 0,now 8 0,這樣就能實現搜的時候實現...