C語言簡介:陣列
本文為C語言簡介系列第五篇文章,前一篇文章為C語言簡介:迴圈控制。
我們常可以在車站、健身房等場所看到公共置物櫃方便我們放置物品,而置物櫃有編號第0號、第1號、第2號、第3號…每個櫃子都能放一個東西,這排櫃子就有點像是陣列的概念。
宣告
int arr[5] = {1, 2, 3, 4, 5}; |
本行程式的意思是說:我要宣告一個叫做 arr 的陣列,而這個陣列有5個位子。大家可以想像成這是在宣告一個叫做 arr 的櫃子,而這個櫃子共有5個位子可以放東西。
在這段宣告中我們可以看到我們在 arr 裡面存放了5個元素,分別是 1、2、3、4、5。那我們如何使用這5個元素呢?
當我要印出 4 時,我們可以寫
printf("%d", arr[3]); |
明明 4 是陣列裡第4個元素,為什麼不是 arr[4] 呢?
第0號櫃
實際上,C語言中,陣列的第1個元素,其索引值其實是 0 而不是 1!
所以!在 arr 陣列中,1 的索引值為 0、2 的索引值為 1……以此類推。
初始化
在我們宣告一個陣列後,我們會希望陣列內的值都是受我們控制的、指定的值才存入,對吧?
此時我們會需要一個叫做初始化的步驟!
聽起來很耳熟對吧!
在C語言簡介:基本輸入輸出我們曾提過這個概念
當時我說
那我可以宣告變數後不賦值嗎?
先說答案:可以。
但是,實務上通常建議宣告後初始化,避免「垃圾值」可能帶來的困擾。
在本篇「陣列」的概念中,初始化的理由跟在「變數」的概念一樣,都是為了避免「垃圾值」帶來的影響。
那如何初始化呢?
我們可以在宣告時這樣寫
int anotherArr[10] = {0}; |
這裡,我們宣告了一個長度為10、叫做 anotherArr 的陣列,與前面宣告 arr 時不同的是,我賦值的部分寫的是 {0},這樣我們就完成了陣列的初始化,從 anotherArr[0] 到 anotherArr[9] 的值都是 0。
陣列的輸入/輸出
輸入
當我們要依序將資料輸入陣列裡時,可以使用 for 迴圈。
舉例如下:
1 |
|
可以看到
4 | for (int i = 0; i < 5; i++) { |
我們利用這個結構可以依序輸入資料到陣列中。
至於為什麼 for 的條件式是 i < 5 是因為我們前面提過在C語言中,陣列的索引值是從 0 開始,所以最後一個元素的索引值是 陣列長度 - 1。
輸出
而輸出的部分則與輸入的方法相似。當我要依序輸出陣列內容時,我們可以利用
1 |
|
來完成。
試試看
請試宣告一個陣列,當使用者輸入
1 2 3 4 5 6 7 8 9 0 |
請輸出
0 9 8 7 6 5 4 3 2 1 |
試試看
請試宣告一個長度為10的陣列,並依序輸入數值,然後輸出剛剛所輸入的最大值。
二維陣列
二維陣列像是一張表格(table)。
二維陣列宣告
int arr[3][5] = { |
這裡我們宣告了一個3×5的二維陣列。
至於讀取資料的方法與前面提到的一維陣列很像!
printf("%d", arr[1][3]); |
就會輸出 9 囉!
二維陣列的初始化
二維陣列的初始化跟一維陣列也很像!
我們可以這樣寫
int another2DArr[5][5] = {0}; |
這樣初始化就完成囉!
二維陣列的輸入/輸出
你大概也猜到我要說什麼了!
沒錯!二維陣列的輸入/輸出長得跟一維陣列的輸入/輸出很像!
只是稍微麻煩了一些
輸入
當我們要將數值依序輸入時,可以使用兩個 for 迴圈。舉例如下:
1 |
|
而為何兩個 for 迴圈的條件式要這樣設定,原因則與上面(一維陣列的輸入/輸出)所提到的相同,在此不多贅述。
輸出
輸出的部分與輸入的方法相似。舉例如下:
1 |
|
註:外層
for迴圈的printf("\n")是為排版美觀,非必要。
結語
以上就是C語言陣列簡介。
雖經過校對,本文內容仍可能有錯誤之處。
倘內容有誤或仍有疑問,歡迎在下方留言區留言!