說明
數組是使用索引號訪問的變量的集合。使用 C++ 編程語言編寫的數組 Arduino 草圖可能很複雜,但使用簡單的數組相對簡單。
創建(聲明)一個數組
以下所有方法都是創建(聲明)數組的有效方法。
int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[5] = {2, 4, -8, 3, 2};
char message[6] = "hello";
您可以聲明一個數組,而無需像在 myInts 中那樣對其進行初始化。
在 myPins 中,我們聲明一個數組而不顯式選擇大小。編譯器計算元素並創建適當大小的數組。
最後,您可以像在 mySensVals 中一樣初始化和調整數組大小。請注意,在聲明 char 類型的數組時,需要比初始化多一個元素來保存所需的空字符。
訪問數組
數組是零索引的,也就是說,參考上麵的數組初始化,數組的第一個元素在索引 0 處,因此
mySensVals[0] == 2, mySensVals[1] == 4,
等等。
這也意味著在一個有十個元素的數組中,索引九是最後一個元素。因此:
int myArray[10]={9, 3, 2, 4, 3, 2, 7, 8, 9, 11};
// myArray[9] contains 11
// myArray[10] is invalid and contains random information (other memory address)
出於這個原因,您在訪問數組時應該小心。訪問數組末尾(使用大於聲明的數組大小 - 1 的索引號)是從用於其他目的的內存中讀取。除了產生無效數據之外,從這些位置讀取可能不會做太多事情。寫入隨機內存位置絕對是一個壞主意,並且通常會導致不愉快的結果,例如崩潰或程序故障。這也可能是一個難以追蹤的錯誤。
與 BASIC 或 JAVA 不同,C++ 編譯器不檢查數組訪問是否在您聲明的數組大小的合法範圍內。
為數組賦值:
mySensVals[0] = 10;
要從數組中檢索值:
x = mySensVals[4];
數組和 FOR 循環
數組通常在 for 循環中進行操作,其中循環計數器用作每個數組元素的索引。例如,要通過串行端口打印數組的元素,您可以執行以下操作:
for (byte i = 0; i < 5; i = i + 1) {
Serial.println(myPins[i]);
}
示例代碼
有關演示數組使用的完整程序,請參見 (Tutorials) 中的 (Knight Rider example)。
相關用法
- Arduino analogRead()用法及代碼示例
- Arduino analogReadResolution()用法及代碼示例
- Arduino abs()用法及代碼示例
- Arduino attachInterrupt()用法及代碼示例
- Arduino analogWriteResolution()用法及代碼示例
- Arduino analogWrite()用法及代碼示例
- Arduino long用法及代碼示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代碼示例
- Arduino ~用法及代碼示例
- Arduino ArduinoBLE - bleDevice.advertisedServiceUuidCount()用法及代碼示例
- Arduino const用法及代碼示例
- Arduino Ethernet - server.begin()用法及代碼示例
- Arduino ArduinoBLE - BLEService()用法及代碼示例
- Arduino digitalWrite()用法及代碼示例
- Arduino ArduinoBLE - bleCharacteristic.subscribe()用法及代碼示例
- Arduino Servo - attach()用法及代碼示例
- Arduino write()用法及代碼示例
- Arduino Arduino_LSM9DS1 - readGyroscope()用法及代碼示例
- Arduino ArduinoSound - FFTAnalyzer.input()用法及代碼示例
- Arduino MKRGSM - gprs.attachGPRS()用法及代碼示例
- Arduino WiFiNINA - WiFi.config()用法及代碼示例
- Arduino MKRGSM - sms.read()用法及代碼示例
- Arduino MKRNB - getCurrentCarrier()用法及代碼示例
- Arduino Scheduler - Scheduler.startLoop()用法及代碼示例
- Arduino Arduino_LSM9DS1 - magneticFieldAvailable()用法及代碼示例
注:本文由純淨天空篩選整理自arduino.cc大神的英文原創作品 array。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。