数组
数组是一群变数的集合,每个变数可以利用特定的索引值来存取。86Duino 的数组与 C 语言相同,数组的使用可以很复杂也可以很简单。
宣告数组
以下是有效宣告数组的方法。
int myInts[6]; int myPins[] = {2, 4, 8, 3, 6}; int mySensVals[6] = {2, 4, -8, 3, 2}; char message[6] = "hello";
你可以宣告一个数组而不初始化,例如 myInts
。
第 2 行在宣告 myPins
数组时不给明确的大小,但编译器将会自动计算元素数量并且创建一个适当大小的数组。
你也可以同时初始化数组内容以及数组大小,像是 mySensVals
;注意宣告 char
数组时,需要初始化一个值给数组让它存放空字元。
存取数组
数组索引从 0 开始,第一个元素的索引值是0:
mySensVals[0] == 2, mySensVals[1] == 4, 直到第四个。
它也代表一个数组中若有十个元素,最后一个元素的索引将是 9。因此:
int myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] 的内容是 11
// myArray[10] 10 是未宣告的位置,内容是不可预期的。
有上面的案例提醒我们必须小心地存取数组,存取超出宣告范围 (使用大于宣告大小减 1 的索引值) 的元素时,会读到用于其他用途的记忆体位址。读取到这些位置很可能会产生不预期的结果。而撰写一个随机记忆体位置存取是很不明智的行为,可能会造成整个程式崩溃或故障,而且非常难除错。
不像 Basic 或者 Java,C 的编译器在使用数组时不会去检查索引值是否合法。
指派数值给数组元素:
mySensVals[0] = 10;
从数组元素中取回数值:
x = mySensVals[4];
数组与 for 回圈
数组常常藉由 for
回圈来操作,利用回圈的计数器当做索引值存取数组内每个元素。举个例子,若要印出所有数组元素将像下面的程式码一样:
int i; for (i = 0; i < 5; i = i + 1) { Serial.println(myPins[i]); }
范例
一个较详细的数组使用范例可以参考 Arduino 相关教学中的 Knight Rider 范例
See also
本页由热血青年 LBU 译自英文版。
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.