当前位置: 首页 > 文档资料 > Arduino 中文教程 >

Arduino - 阵列( Arrays)

优质
小牛编辑
131浏览
2023-12-01

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

下面给出的插图显示了一个名为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;

声明数组 (Declaring Arrays)

数组在内存中占用空间。 要指定元素的类型和数组所需的元素数,请使用表单的声明 -

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行),它以表格格式打印数组。

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 - 它将产生以下结果 -

None
元件

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)打印该数组。

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 - 它将产生以下结果 -

None
元件

0

1

2

3

4

5

6

7

8

9

32

27

64

18

95

14

90

70

60

37

示例3:对数组元素求和

通常,数组的元素表示要在计算中使用的一系列值。 例如,如果数组的元素代表考试成绩,教授可能希望总计数组的元素并使用该总和来计算考试的课程平均值。 程序对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.概念与描述
1将数组传递给函数

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

2多维数组

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