数组是具有相同类型的连续的一组存储器位置。 要引用数组中的特定位置或元素,我们指定数组的名称和数组中特定元素的位置编号。
下图给出了一个名为C的整数数组,它包含11个元素。 通过给出数组名称后跟特定元素的位置编号([]),您引用这些元素中的任何一个。 位置编号更正式地称为下标或索引(此数字指定从数组开始的元素数)。 第一个元素具有下标0(零),有时称为零元素。
因此,数组C的元素是C [0](发音为“C sub zero"),C [1],C [2]等等。 阵列C中的最高下标是10,其比阵列(11)中的元素的数量小1。 数组名遵循与其他变量名相同的约定。
下标必须是整数或整数表达式(使用任何整数类型)。 如果程序使用表达式作为下标,则程序评估表达式以确定下标。 例如,如果我们假设变量a等于5,变量b等于6,那么语句将2添加到数组元素C [11]。
下标数组名是一个左值,它可以在赋值的左侧使用,就像非数组变量名一样。
让我们更仔细地检查给定图中的数组C. 整个数组的名称是C.它的11个元素被称为C [0]到C [10]。 C [0]的值为-45,C [1]的值为6,C [2]的值为0,C [7]的值为62,C [10]的值为 78。
要打印包含在数组C的前三个元素中的值的总和,我们将写 -
Serial.print (C[ 0 ] + C[ 1 ] + C[ 2 ] );
要将C [6]的值除以2并将结果赋给变量x,我们将写为 -
x = C[ 6 ] / 2;
声明数组
数组占用内存中的空间。 要指定元素的类型和数组所需的元素数量,请使用形式的声明 -
type arrayName [ arraySize ] ;
编译器保留适当的内存量。 (回想一个声明,它保留内存更恰当地称为定义)。 arraySize必须是大于零的整数常量。 例如,要告诉编译器为整数数组C保留11个元素,请使用声明 -
int C[ 12 ]; // C is an array of 12 integers
数组可以声明为包含任何非引用数据类型的值。 例如,字符串类型的数组可以用于存储字符串。
使用数组的示例
本节提供了许多演示如何声明,初始化和操作数组的例子。
示例1:声明数组并使用循环初始化数组元素
程序声明一个10元素的整数数组 n 。 行a-b使用 For 语句将数组元素初始化为零。 与其他自动变量一样,自动数组不会隐式初始化为零。 第一个输出语句(行c)显示在后续for语句(行d-e)中打印的列的列标题,以列表格式打印数组。
示例
int n[ 10 ] ; // n is an array of 10 integers void setup () { } void loop () { for ( int i = 0; i < 10; ++i ) // initialize elements of array n to 0 { n[ i ] = 0; // set element at location i to 0 Serial.print (i) ; Serial.print (‘\r’) ; } for ( int j = 0; j < 10; ++j ) // output each array element's value { Serial.print (n[j]) ; Serial.print (‘\r’) ; } }
结果 - 它会产生以下结果 -
元件 | 值 |
---|---|
0 1 2 3 4 5 6 7 8 9 | 0 0 0 0 0 0 0 0 0 0 |
示例2:使用初始化程序列表在声明中初始化数组
数组元素也可以在数组声明中通过带有等号的数组名和以逗号分隔的逗号分隔的初始值的列表来初始化。 程序使用初始化器列表初始化具有10个值(行a)的整数数组,并以表格格式(行b-c)打印数组。
示例
// n is an array of 10 integers int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 } ; void setup () { } void loop () { for ( int i = 0; i < 10; ++i ) // initialize elements of array n to 0 { Serial.print (i) ; Serial.print (‘\r’) ; } for ( int j = 0; j < 10; ++j ) // output each array element's value { Serial.print (n[j]) ; Serial.print (‘\r’) ; } }
结果 - 它会产生以下结果 -
元件 | 值 |
---|---|
0 1 2 3 4 5 6 7 8 9 | 32 27 64 18 95 14 90 70 60 37 |
示例3:对数组的元素求和
通常,数组的元素表示要在计算中使用的一系列值。 例如,如果数组的元素表示考试成绩,则教授可能希望总计数组的元素并使用该和来计算考试的类平均值。 程序对10元素整数数组 a 中包含的值进行求和。
示例
const int arraySize = 10; // constant variable indicating size of array int a[ arraySize ] = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 }; int total = 0; void setup () { } void loop () { // sum contents of array a for ( int i = 0; i < arraySize; ++i ) total += a[ i ]; Serial.print (“Total of array elements : ") ; Serial.print(total) ; }
结果 - 它会产生以下结果 -
Total of array elements: 849
数组对Arduino很重要,应该需要更多的关注。 以下与数组相关的重要概念应该清楚Arduino -
S.NO. | 概念和描述 |
---|---|
1 | Passing Arrays to Functions 要将数组参数传递给函数,请指定没有任何括号的数组的名称。 |
2 | Multi-Dimensional Arrays 具有两个维度(即,下标)的数组通常表示由以行和列排列的信息组成的值的表。 |