Array

來自ALSROBOT WiKi
跳轉(zhuǎn)至: 導(dǎo)航、 搜索

Arrays (數(shù)組)

數(shù)組是一種可訪問的變量的集合。Arduino的數(shù)組是基于C語言的,因此這會變得很復(fù)雜,但使用簡單的數(shù)組是比較簡單的。
創(chuàng)建(聲明)一個數(shù)組

下面的方法都可以用來創(chuàng)建(聲明)數(shù)組。

  myInts [6];
  myPins [] = {2,4,8,3,6};
  mySensVals [6] = {2,4,-8,3,2};
  char message[6] = "hello";
 

你聲明一個未初始化數(shù)組,例如myPins。

在myPins中,我們聲明了一個沒有明確大小的數(shù)組。編譯器將會計算元素的大小,并創(chuàng)建一個適當(dāng)大小的數(shù)組。

當(dāng)然,你也可以初始化數(shù)組的大小,例如在mySensVals中。請注意,當(dāng)聲明一個char類型的數(shù)組時,你初始化的大小必須大于元素的個數(shù),以容納所需的空字符。
訪問數(shù)組

數(shù)組是從零開始索引的,也就說,上面所提到的數(shù)組初始化,數(shù)組第一個元素是為索引0,因此:

mySensVals [0] == 2,mySensVals [1] == 4,

依此類推 。

這也意味著,在包含十個元素的數(shù)組中,索引九是最后一個元素。因此,

  int myArray[10] = {9,3,2,4,3,2,7,8,9,11};
  // myArray[9]的數(shù)值為11
  // myArray[10],該索引是無效的,它將會是任意的隨機信息(內(nèi)存地址)
 

出于這個原因,你在訪問數(shù)組應(yīng)該小心。若訪問的數(shù)據(jù)超出數(shù)組的末尾(即索引數(shù)大于你聲明的數(shù)組的大小- 1),則將從其他內(nèi)存中讀取數(shù)據(jù)。從這些地方讀取的數(shù)據(jù),除了產(chǎn)生無效的數(shù)據(jù)外,沒有任何作用。向隨機存儲器中寫入數(shù)據(jù)絕對是一個壞主意,通常會導(dǎo)致不愉快的結(jié)果,如導(dǎo)致系統(tǒng)崩潰或程序故障。要排查這樣的錯誤是也是一件難事。 不同于Basic或JAVA,C語言編譯器不會檢查你訪問的數(shù)組是否大于你聲明的數(shù)組。
指定一個數(shù)組的值:

  mySensVals [0] = 10;

從數(shù)組中訪問一個值:

  X = mySensVals [4];

數(shù)組和循環(huán)

數(shù)組往往在for循環(huán)中進行操作,循環(huán)計數(shù)器可用于訪問每個數(shù)組元素。例如,將數(shù)組中的元素通過串口打印,你可以這樣做:

  int i;
  for (i = 0; i < 5; i = i + 1) {
  Serial.println(myPins[i]);
  }