Arduino - 数组

数组是一组连续的、类型相同的内存位置。要引用数组中的特定位置或元素,我们需要指定数组的名称和特定元素在数组中的位置编号。

下图显示了一个名为 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 是一个由 12 个整数组成的数组

数组可以声明为包含任何非引用数据类型的值。例如,可以使用字符串类型的数组来存储字符串。

使用数组的示例

本节提供了很多示例,演示如何声明、初始化和操作数组。

示例 1:声明数组并使用循环初始化数组的元素

程序声明了一个 10 元素的整数数组 n。行 a–b 使用 For 语句将数组元素初始化为零。与其他自动变量一样,自动数组不会隐式初始化为零。第一个输出语句(行 c)显示在后续 for 语句(行 d–e)中打印的列的列标题,该语句以表格格式打印数组。

示例

int n[ 10 ] ; // n 是一个由 10 个整数组成的数组

void setup () {

}

void loop () {
   for ( int i = 0; i < 10; ++i ) // 将数组 n 的元素初始化为 0
   {
      n[ i ] = 0; // 将位置 i 处的元素设置为 0
      Serial.print (i) ;
      Serial.print (‘
’) ;
   }
   for ( int j = 0; j < 10; ++j ) // 输出每个数组元素的值 
   {
      Serial.print (n[j]) ;
      Serial.print (‘
’) ;
   } 
}

结果 − 它将产生以下结果 −

元素

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 是一个包含 10 个整数的数组
int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 } ;

void setup () {

}

void loop () {
   for ( int i = 0; i < 10; ++i ) {
      Serial.print (i) ;
      Serial.print (‘
’) ;
   }
   for ( int j = 0; j < 10; ++j ) // 输出每个数组元素的值 {
    Serial.print (n[j]) ;
    Serial.print ('
') ;
}
}

结果 − 它将产生以下结果 −

元素

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; // 表示数组大小的常量变量
int a[ arraySize ] = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 };
int total = 0;

void setup () {

}
void loop () {
	// 对数组 a 的内容求和
   for ( int i = 0; i < arraySize; ++i )
      total += a[ i ];
   Serial.print (“Total of array elements : ”) ;
   Serial.print(total) ;
}

结果 − 它将产生以下结果 −

数组元素总数:849

数组对 Arduino 来说很重要,需要更多关注。以下与数组相关的重要概念对于 Arduino 来说应该很清楚 −

S.NO. 概念 &描述
1 将数组传递给函数

要将数组参数传递给函数,请指定数组的名称(不带任何括号)。

2 多维数组

具有两个维度(即下标)的数组通常表示由按行和列排列的信息组成的值表。