手册教程~

Arduino 数组

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

下图显示了一个名为C的整数数组,它包含11个元素。通过在方括号([])中提供数组名称和特定元素的位置号,可以引用这些元素中的任何一个。位置号更正式地称为下标或索引(这个数字指定从数组开始的元素数)。第一个元素的下标是0(0),有时也称为零元素。

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

Elements of Array

下标必须是整数或整数表达式(使用任何整数类型)。如果程序将表达式用作下标,则程序将对表达式求值以确定下标。例如,如果我们假设变量a等于5,变量b等于6,那么语句就会向数组元素C[11]添加2。

下标的数组名是一个lvalue,它可以用在赋值的左侧,就像非数组变量名一样。

让我们在图中更仔细地检查数组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个整数的数组

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

例子使用数组

本节给出许多示例,演示如何声明、初始化和操作数组。

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

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

例子

int n[ 10 ] ; // n是一组10次方
setup () {}

void loop () {
   for ( int i = 0; i < 10; ++i ) // 数组到0的初始化元素 {
      n[ i ] = 0; // set element at location i to 0
      Serial.print (i) ;
      Serial.print (‘\r’) ;
   }
   for ( int j = 0; j < 10; ++j ) // 输出每个数组元素的值 {
      Serial.print (n[j]) ;
      Serial.print (‘\r’) ;
   }
}

结果-它将产生下列结果

ElementValue01234567890000000000

示例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 (‘\r’) ;
   }
   for ( int j = 0; j < 10; ++j ) // 输出每个数组元素的值 {
      Serial.print (n[j]) ;
      Serial.print (‘\r’) ;
   } 
}

结果-它将产生下列结果

ElementValue012345678932276418951490706037

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

结果-它将产生下列结果

Total of array elements: 849

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

S.NO.概念和描述
1

Passing Arrays to Function

s

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

2

Multi-Dimensional Array

s

二维数组(即二维数组)。(下标)通常表示由行和列中排列的信息组成的值表。