陣列
陣列是一群變數的集合,每個變數可以利用特定的索引值來存取。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
本頁由熱血青年 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.