Arduino - 陣列



陣列是記憶體中連續的一組相同型別的資料。要引用陣列中的特定位置或元素,需要指定陣列名稱和該元素的位置編號。

下圖顯示了一個名為 C 的整數陣列,它包含 11 個元素。您可以透過給出陣列名稱,後跟方括號 ([]) 中的特定元素位置編號來引用任何一個元素。位置編號更正式地稱為下標或索引(此數字指定從陣列開頭算起的元素個數)。第一個元素的下標為 0(零),有時稱為零元素。

因此,陣列 C 的元素為 C[0](讀作“C 下標零”)、C[1]、C[2] 等等。陣列 C 中的最高下標為 10,比陣列中的元素個數 (11) 少 1。陣列名稱遵循與其他變數名稱相同的約定。

Elements of Array

下標必須是整數或整數表示式(使用任何整型)。如果程式使用表示式作為下標,則程式會計算表示式以確定下標。例如,如果我們假設變數 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 保留 11 個元素,請使用以下宣告:

int C[ 12 ]; // C is an array of 12 integers

陣列可以宣告為包含任何非引用資料型別的值。例如,字串型別的陣列可以用來儲存字串。

使用陣列的示例

本節提供了許多示例,演示如何宣告、初始化和運算元組。

示例 1:宣告陣列並使用迴圈初始化陣列的元素

程式聲明瞭一個包含 10 個元素的整數陣列 n。第 a-b 行使用 For 語句將陣列元素初始化為零。與其他自動變數一樣,自動陣列不會隱式初始化為零。第一個輸出語句(第 c 行)顯示後續 for 語句(第 d-e 行)中列印的列的列標題,該語句以表格格式列印陣列。

示例

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’) ;
   } 
}

結果 - 它將產生以下結果:

Element Value

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

0

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’) ;
   } 
}

結果 - 它將產生以下結果:

Element Value

0

1

2

3

4

5

6

7

8

9

32

27

64

18

95

14

90

70

60

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 應該清楚以下與陣列相關的概念:

序號 概念與描述
1 將陣列傳遞給函式

要將陣列引數傳遞給函式,請指定陣列名稱,無需任何括號。

2 多維陣列

具有兩個維度(即下標)的陣列通常表示由排列成行和列的資訊組成的值表。

廣告