Arduino 简明教程

Arduino - Arrays

数组是同类型的连续内存位置组。要提及数组中的特定位置或元素,我们指定数组的名称和数组中特定元素的位置编号。

下面给出的插图显示了一个名为 C 的整数数组,其中包含 11 个元素。您可以通过给出数组名后跟方括号([])中的特定元素的位置编号来引用这些元素中的任何一个。位置编号更正式的名称是下标或索引(此编号指定了从数组开始的元素数量)。第一个元素的下标为 0(零),有时称为零元素。

因此,数组 C 的元素为 C[0](读作“C 零下标”)、C[1]、C[2],依此类推。数组 C 中最高的下标是 10,比数组中的元素数量(11)少 1。数组名遵循与其他变量名相同的约定。

elements of array

下标必须是一个整数或整数表达式(使用任何整数类型)。如果程序使用表达式作为下标,则程序会计算该表达式的值以确定下标。例如,如果我们假设变量 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;

Declaring Arrays

数组占用内存中的空间。要指定数组中元素的类型和数组所需元素的数量,请使用以下形式的声明:

type arrayName [ arraySize ] ;

编译器会保留适当数量的内存。(回想一下,保留内存的声明更确切地称为定义)。arraySize 必须大于零的整数常量。例如,要告诉编译器为整数数组 C 保留 11 个元素,请使用声明:

int C[ 12 ]; // C is an array of 12 integers

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

Examples Using Arrays

本部分提供了许多示例,用以演示如何声明、初始化和操作数组。

Example 1: Declaring an Array and using a Loop to Initialize the Array’s Elements

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

Example

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’) ;
   }
}

Result − 将产生以下结果:

Element
Value



0
1
2
3
4
5
6
7
8
9


0
0
0
0
0
0
0
0
0
0

Example 2: Initializing an Array in a Declaration with an Initializer List

数组的元素也可以在数组声明中初始化,方法是在数组名称后跟一个等号和一个用花括号分隔的逗号分隔的初始化程序列表。该程序使用初始化程序列表使用 10 个值初始化一个整数数组(第 a 行),并将数组以表格格式打印(第 b-c 行)。

Example

// 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 ) {
      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’) ;
   }
}

Result − 将产生以下结果:

Element
Value



0
1
2
3
4
5
6
7
8
9


32
27
64
18
95
14
90
70
60
37

Example 3: Summing the Elements of an Array

数组的元素通常表示要用于计算的一系列值。例如,如果数组的元素表示考试成绩,教授可能希望计算数组元素的总和,并使用该总和计算考试的班级平均成绩。该程序对 10 个元素的整型数组 a 中包含的值求和。

Example

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) ;
}

Result − 将产生以下结果:

Total of array elements: 849

对于 Arduino 来说,阵列很重要,应该受到更多关注。以下与阵列相关的重要的概念应该对 Arduino 很清楚−

S.NO.

Concept & Description

1

Passing Arrays to Functions 要将数组参数传递给函数,请指定数组的名称,不要使用任何括号。

2

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