Arduino - 陣列
陣列是具有相同型別的連續記憶體位置組。要引用陣列中的特定位置或元素,我們指定陣列的名稱和陣列中特定元素的位置編號。
下面給出的插圖顯示了一個名為 C 的整數陣列,其中包含 11 個元素。你可以通過在方括號 []
中給出陣列名稱後跟特定元素的位置編號來引用這些元素中的任何一個。位置編號更正式地稱為下標或索引(此數字指定從陣列開頭的元素數)。第一個元素有下標 0(零),有時稱為零元素。
因此,陣列 C 的元素是 C[0]
,C[1]
,C[2]
等。陣列 C 中的最高下標是 10,比陣列中的元素數(11)少 1。陣列名稱遵循與其他變數名稱相同的約定。
下標必須是整數或整數表示式(使用任何整數型別)。如果程式使用表示式作為下標,則程式將計算表示式以確定下標。例如,如果我們假設變數 a 等於 5 並且變數 b 等於 6,則該語句將 2 新增到陣列元素 C[11]
。
下標陣列可以在賦值的左側使用,就像非陣列變數名一樣。
讓我們更仔細地檢查給定圖中的陣列 C. 整個陣列的名稱是 C。它的 11 個元素稱為 C[0]
到 C[10]
。 C[0]
的值為-45,C[1]
的值為 6,C[2]
的值為 0,C[7]
的值為 62,C[10]
的值為 78。
要列印陣列 C 的前三個元素中包含的值的總和,我們會寫 -
Serial.print (C[0] + C[1] + C[2] );
要將 C[6]
的值除以 2 並將結果賦值給變數 x,我們會寫 -
x = C[ 6 ] / 2;
宣告陣列
陣列在記憶體中佔用空間。要指定元素的型別和陣列所需的元素數,請使用陣列的宣告 -
type arrayName [ arraySize ] ;
編譯器保留適當的記憶體量。 (回想一下,保留記憶體的宣告更準確地稱為定義)。 arraySize
必須是大於零的整數常量。例如,要告訴編譯器為整數陣列 C 保留 12 個元素,請使用宣告 -
int C[ 12 ]; // C is an array of 12 integers
可以宣告陣列包含任何非引用資料型別的值。例如,字串陣列型別可用於儲存字串。
陣列使用舉例
本節提供了許多例子來解釋如何宣告、初始化和運算元組。
示例 1:宣告一個陣列並使用迴圈初始化陣列的元素
該程式宣告瞭一個 10 元素的整數陣列 n。然後使用 for 語句將陣列元素初始化為零。與其他自動變數一樣,自動陣列不會隱式初始化為零。第一個輸出語句顯示在後續 for 語句中列印的列的列標題,它以表格格式列印陣列。
例
int n[ 10 ] ; // n is an array of 10 integers
void setup () {
}
void loop () {
for ( int i = 0; i < 10; ++i ) // initialize elements of array n to 0 {
n[ i ] = 0; // set element at location i to 0
Serial.print (i) ;
Serial.print (‘\r’) ;
}
for ( int j = 0; j < 10; ++j ) // output each array element's value {
Serial.print (n[j]) ;
Serial.print (‘\r’) ;
}
}
結果 - 它將產生以下結果 -
元素 | 值 |
---|---|
0 | 0 |
1 | 0 |
2 | 0 |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 0 |
8 | 0 |
9 | 0 |
示例 2:使用初始化列表初始化宣告中的陣列
陣列的元素也可以在陣列宣告中初始化,方法是在陣列名稱後面加上等號和大括號分隔的逗號分隔的初始化列表。該程式使用初始化列表初始化具有 10 個值的整數陣列(行 a),並以表格格式(行 b-c)列印該陣列。
例
// n is an array of 10 integers
int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 } ;
void setup () {
}
void loop () {
for ( int i = 0; i < 10; ++i ) {
Serial.print (i) ;
Serial.print (‘\r’) ;
}
for ( int j = 0; j < 10; ++j ) // output each array element's value {
Serial.print (n[j]) ;
Serial.print (‘\r’) ;
}
}
結果 - 它將產生以下結果 -
元素 | 值 |
---|---|
0 | 32 |
1 | 27 |
2 | 64 |
3 | 18 |
4 | 95 |
5 | 14 |
6 | 90 |
7 | 70 |
8 | 60 |
9 | 37 |
示例 3:對陣列元素求和
通常,陣列的元素表示要在計算中使用的一系列值。例如,如果陣列的元素代表考試成績,教授可能希望總計陣列的元素並使用該總和來計算考試的課程平均值。程式對 10 個元素的整數陣列 a 中包含的值來求和。
例
const int arraySize = 10; // constant variable indicating size of array
int a[ arraySize ] = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 };
int total = 0;
void setup () {
}
void loop () {
// sum contents of array a
for ( int i = 0; i < arraySize; ++i )
total += a[ i ];
Serial.print (“Total of array elements : ”) ;
Serial.print(total) ;
}
結果 - 它將產生以下結果 -
Total of array elements: 849
陣列對 Arduino 很重要,需要更多關注。Arduino 應該清楚以下與陣列相關的重要概念 -