Array:修訂版本之間的差異

出自YFRobotwiki
跳轉到: 導覽搜尋
(以“{| border="0" cellpadding="20" width="100%" |- |width="100%" valign="top" align="left"| 数组是一种可访问的变量的集合。Arduino的数组是基于C语言...”为内容创建页面)
 
 
(由1名用戶作出的一個中途修訂版本未被顯示)
第 37 行: 第 37 行:
 
   // myArray[9]的数值为11
 
   // myArray[9]的数值为11
 
   // myArray[10],该索引是无效的,它将会是任意的随机信息(内存地址)
 
   // myArray[10],该索引是无效的,它将会是任意的随机信息(内存地址)
</pre>
+
</pre>
  
 
 出于这个原因,你在访问数组应该小心。若访问的数据超出数组的末尾(即索引数大于你声明的数组的大小- 1),则将从其他内存中读取数据。从这些地方读取的数据,除了产生无效的数据外,没有任何作用。向随机存储器中写入数据绝对是一个坏主意,通常会导致不愉快的结果,如导致系统崩溃或程序故障。要排查这样的错误是也是一件难事。 不同于Basic或JAVA,C语言编译器不会检查你访问的数组是否大于你声明的数组。
 
 出于这个原因,你在访问数组应该小心。若访问的数据超出数组的末尾(即索引数大于你声明的数组的大小- 1),则将从其他内存中读取数据。从这些地方读取的数据,除了产生无效的数据外,没有任何作用。向随机存储器中写入数据绝对是一个坏主意,通常会导致不愉快的结果,如导致系统崩溃或程序故障。要排查这样的错误是也是一件难事。 不同于Basic或JAVA,C语言编译器不会检查你访问的数组是否大于你声明的数组。
第 66 行: 第 66 行:
  
  
<font color="orange" size="+1">'''扩展阅读'''</font>
+
<font color="orange" size="">'''扩展阅读'''</font>
 
:- [[integer constants(整型常量)]]
 
:- [[integer constants(整型常量)]]
:- [[PROGMEN]]
+
:- [[PROGMEM]]
 
|}
 
|}
  

2017年9月10日 (日) 21:30的最新修訂版本

數組是一種可訪問的變數的集合。Arduino的數組是基於C語言的,因此這會變得很複雜,但使用簡單的數組是比較簡單的。


創建(聲明)一個數組

下面的方法都可以用來創建(聲明)數組。

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

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

在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]的数值为11
  // myArray[10],该索引是无效的,它将会是任意的随机信息(内存地址)

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


指定一個數組的值:

  mySensVals [0] = 10;

從數組中訪問一個值:

  X = mySensVals [4];

數組和循環


數組往往在for循環中進行操作,循環計數器可用於訪問每個數組元素。例如,將數組中的元素通過串口列印,你可以這樣做:

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


擴展閱讀

- integer constants(整型常量)
- PROGMEM


返回Arduino語法參考列表

更多建議和問題歡迎反饋至 YFRobot論壇