所謂陣列 ( 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; //傳回計算結果 }