Arduino 數(shù)組

2022-02-18 09:29 更新

數(shù)組是連續(xù)的一組相同類型的內(nèi)存位置。要引用數(shù)組中的特定位置或元素,我們指定數(shù)組的名稱和數(shù)組中特定元素的位置編號(hào)。

下圖給出了一個(gè)名為C的整數(shù)數(shù)組,它包含11個(gè)元素。通過給出數(shù)組名稱,后面跟特定元素的位置編號(hào):方括號(hào)([]),你可以引用這些元素中的任何一個(gè)。位置編號(hào)更正式地稱為下標(biāo)或索引(該數(shù)字指定從數(shù)組開始的元素?cái)?shù))。第一個(gè)元素具有下標(biāo)0(零),有時(shí)稱為零元素。

因此,數(shù)組C的元素是C[0],C[1],C[2]等等。數(shù)組C中的最高下標(biāo)是10,其比數(shù)組中的元素?cái)?shù)少1。數(shù)組名遵循與其他變量名相同的約定。


Elements of Array


下標(biāo)必須是整數(shù)或整數(shù)表達(dá)式(使用任何整數(shù)類型)。如果程序使用表達(dá)式作為下標(biāo),則程序評(píng)估表達(dá)式以確定下標(biāo)。例如,如果我們假設(shè)變量a等于5,變量b等于6,那么語句將數(shù)組元素C[11]加2。

下標(biāo)數(shù)組名是一個(gè)左值,它可以在賦值的左側(cè)使用,就像非數(shù)組變量名一樣。

讓我們更仔細(xì)地檢查給定圖中的數(shù)組C。整個(gè)數(shù)組的名稱是C。它的11個(gè)元素被稱為C[0]到C[10]。C[0]的值為-45,C[1]的值為6,C[2]的值為0,C[7]的值為62,C[10]的值為78。

要打印數(shù)組C的前三個(gè)元素中包含的值的總和,我們將寫:

Serial.print (C[ 0 ] + C[ 1 ] + C[ 2 ] );

要將C[6]的值除以2并將結(jié)果賦值給變量x,我們將寫:

x = C[ 6 ] / 2;

聲明數(shù)組

數(shù)組占用內(nèi)存中的空間。要指定元素的類型和數(shù)組所需的元素?cái)?shù)量,請(qǐng)使用以下形式的聲明:

type arrayName [ arraySize ] ;

編譯器保留適當(dāng)?shù)膬?nèi)存量(回想一下,保留內(nèi)存的聲明更恰當(dāng)?shù)乇环Q為定義)。arraySize必須是大于零的整數(shù)常量。例如,要告訴編譯器為整數(shù)數(shù)組C保留11個(gè)元素,請(qǐng)使用聲明:

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

數(shù)組可以聲明為包含任何非引用數(shù)據(jù)類型的值。例如,可以使用字符串類型的數(shù)組來存儲(chǔ)字符串。

使用數(shù)組的示例

本節(jié)提供了許多示例來演示如何聲明,初始化以及操作數(shù)組。

示例1:聲明數(shù)組并使用循環(huán)來初始化數(shù)組的元素

程序聲明一個(gè)10元素的整數(shù)數(shù)組 n 。行a-b使用 For 語句將數(shù)組元素初始化為零。與其他自動(dòng)變量一樣,自動(dòng)數(shù)組不會(huì)隱式初始化為零。第一個(gè)輸出語句(行c)顯示在后續(xù)for語句(行d-e)中打印的列的列標(biāo)題,以表格格式打印數(shù)組。

示例

int n[ 10 ] ; // n is an array of 10 integers

void setup () {
    Serial.begin(9600); //串口初始化 
}

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

結(jié)果 - 它會(huì)產(chǎn)生以下結(jié)果:

元件

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

0

0


示例2:使用初始化器列表在聲明中初始化數(shù)組

數(shù)組元素也可以在數(shù)組聲明中初始化,通過在數(shù)組名后面跟隨等號(hào)和一個(gè)用大括號(hào)及逗號(hào)分隔的初始化器列表。程序使用初始化器列表來初始化一個(gè)具有10個(gè)值的整數(shù)數(shù)組(行a),并以表格格式(行b-c)打印數(shù)組。

示例

// n is an array of 10 integers
int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 } ;

void setup () {

    Serial.begin(9600); //串口初始化 

}

void loop () { for ( int i = 0; i < 10; ++i ){ // initialize elements of array n 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’) ; } }

結(jié)果 - 它會(huì)產(chǎn)生以下結(jié)果:

元件

0

1

2

3

4

5

6

7

8

9

32

27

64

18

95

14

90

70

60

37


示例3:對(duì)數(shù)組的元素求和

通常,數(shù)組的元素表示要在計(jì)算中使用的一系列值。例如,如果數(shù)組的元素表示考試成績(jī),教授可能希望將數(shù)組的元素進(jìn)行加總,并使用該總和來計(jì)算班級(jí)考試的平均成績(jī)。程序?qū)?0元素整數(shù)數(shù)組 a 中的值進(jìn)行求和。

示例

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 () {

    Serial.begin(9600); //串口初始化 

}

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

結(jié)果 - 它會(huì)產(chǎn)生以下結(jié)果:

Total of array elements: 849

數(shù)組對(duì)Arduino很重要,應(yīng)該需要更多的關(guān)注。以下是學(xué)習(xí)Arduino應(yīng)該清楚的與數(shù)組相關(guān)的重要概念:

序號(hào)概念和描述
1將數(shù)組傳遞給函數(shù)

要將數(shù)組參數(shù)傳遞給函數(shù),請(qǐng)指定沒有任何括號(hào)的數(shù)組的名稱。

2多維數(shù)組

具有兩個(gè)維度(即,下標(biāo))的數(shù)組通常表示由排列在行和列中的信息組成的值的表格。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)