“Array”的版本间的差异

来自YFRobotwiki
跳转至: 导航搜索
(以“{| border="0" cellpadding="20" width="100%" |- |width="100%" valign="top" align="left"| 数组是一种可访问的变量的集合。Arduino的数组是基于C语言...”为内容创建页面)
 
 
(未显示1个用户的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论坛