所謂陣列 ( array ) 是指存放在連續記憶體中的一群相同資料形態的集合,陣列也如同變數一樣需要先宣告,編譯器才會知道陣列的資料形態及大小。 陣列的宣告陣列包含四個項目:

① 資料形態:在陣列中每個元素的資料形態皆相同。

② 陣列名稱:命令規則與變數宣告方法相同。

③ 陣列大小:陣列可以是多維的,但必須指定其大小,編譯器才能為陣列配置記憶體空間。

④ 陣列初值:與變數相同,可以事先指定初值或不指定。

☛ 一維陣列

宣告格式:

資料形態 陣列名稱[陣列大小n]={初值0,初值1,初值2,初值3,...,初值n-1};

程式範例:

void setup() {

}

void loop() {
     int a[5]={1,2,3,4,5};  //宣告一維整數陣列
}

☛ 二維陣列

宣告格式:

資料形態 陣列名稱[m][n]=
         { 初值0, 初值1, 初值2, ... , 初值n-1 },   //第 0 列
           初值0, 初值1, 初值2, ... , 初值n-1 },   //第 1 列
                               :
           初值0, 初值1, 初值2, ... , 初值n-1 } }; //第 m-1 列

程式範例:

void setup() {

}

void loop() {
     int a[2][3]=        //宣告二維整數陣列
         { {0,1,2},      //第 0 列
           {3,4,5} };    //第 1 列
}

☛ 以陣列傳引數

將變數作為引數傳入函式中,是將變數的數值傳至函式,同時在函式中會在配置一個記憶體空間給這個變數,此種方法稱為傳值呼叫。 如果要將陣列資料傳入函式中,則必須傳給函式兩個引數:一為資料位址的,一為陣列的大小,此種方法稱為傳址呼叫。 當傳遞陣列給函式時,並不會將此陣列複製一份給函式,只是傳遞陣列位址給函式,函式再利用這個位址與註標去存取原來在主函式中的陣列。

程式範例:

void setup() {

}

void loop() {
     int result;                  //宣告整數變數 result
     int a[5]={1,2,3,4,5};        //宣告整數陣列 a[5]
     int size=5;                  //宣告整數變數 size
     result=sum(a,size);          //傳址呼叫函式 sum
     Serial.println(result);
}

int sum(int a[],int size) {       //函式 sum
    int i;                        //宣告整數變數 i
    int result=0;                 //宣告整數變數 result
    for(i=0;i<size;i++)
        result=result+a[i];       //計算陣列中所有元素的總和
    return result;                //傳回計算結果
}