陣列

陣列是一群變數的集合,每個變數可以利用特定的索引值來存取。86Duino 的陣列與 C 語言相同,陣列的使用可以很複雜也可以很簡單。

宣告陣列

以下是有效宣告陣列的方法。

  int myInts[6];
  int myPins[] = {2, 4, 8, 3, 6};
  int mySensVals[6] = {2, 4, -8, 3, 2};
  char message[6] = "hello";

你可以宣告一個陣列而不初始化,例如 myInts

第 2 行在宣告 myPins 陣列時不給明確的大小,但編譯器將會自動計算元素數量並且創建一個適當大小的陣列。

你也可以同時初始化陣列內容以及陣列大小,像是 mySensVals;注意宣告 char 陣列時,需要初始化一個值給陣列讓它存放空字元。

存取陣列

陣列索引從 0 開始,第一個元素的索引值是0:


mySensVals[0] == 2, mySensVals[1] == 4, 直到第四個。

它也代表一個陣列中若有十個元素,最後一個元素的索引將是 9。因此:


int myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] 的內容是 11
// myArray[10] 10 是未宣告的位置,內容是不可預期的。

有上面的案例提醒我們必須小心地存取陣列,存取超出宣告範圍 (使用大於宣告大小減 1 的索引值) 的元素時,會讀到用於其他用途的記憶體位址。讀取到這些位置很可能會產生不預期的結果。而撰寫一個隨機記憶體位置存取是很不明智的行為,可能會造成整個程式崩潰或故障,而且非常難除錯。

不像 Basic 或者 Java,C 的編譯器在使用陣列時不會去檢查索引值是否合法。

指派數值給陣列元素:


mySensVals[0] = 10;

從陣列元素中取回數值:


x = mySensVals[4];

陣列與 for 迴圈

陣列常常藉由 for 迴圈來操作,利用迴圈的計數器當做索引值存取陣列內每個元素。舉個例子,若要印出所有陣列元素將像下面的程式碼一樣:

int i;
for (i = 0; i < 5; i = i + 1) {
  Serial.println(myPins[i]);
}

範例

一個較詳細的陣列使用範例可以參考 Arduino 相關教學中的 Knight Rider 範例

See also

Variable Declaration


語法參考主頁面

本頁由熱血青年 LBU 譯自英文版。

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.