找回密码
 立即注册
搜索
查看: 650|回复: 0

[Arduino 语法参考] 数组

[复制链接]

267

主题

0

回帖

1164

积分

管理员

积分
1164
发表于 2024-3-10 19:28:09 | 显示全部楼层 |阅读模式

数组

[数据类型]

描述

数组是一组通过索引号访问的变量集合。数组属于构造数据类型,一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。在 Arduino 草图(使用 C++ 编程语言编写)中,数组可能较为复杂,但使用简单数组相对直接。

创建(声明)数组

以下所有方法都是创建(声明)数组的有效方式。

// 声明一个给定长度的数组,但不初始化值:
int myInts[6];

// 声明一个数组,不显式选择大小(编译器计算元素数量并创建适当大小的数组):
int myPins[] = {2, 4, 8, 3, 6, 4};

// 声明一个给定长度的数组并初始化其值:
int mySensVals[5] = {2, 4, -8, 3, 2};

// 声明一个类型为char的数组时,需要使其长度多一个元素,以容纳所需的空终止字符:
char message[6] = "hello";

访问数组

数组是从零开始索引的,即引用上面的初始化的数组,数组的第一个元素位于索引 0,因此

mySensVals[0] == 2, mySensVals[1] == 4,以此类推。

这也意味着在包含十个元素的数组中,索引 9 是最后一个元素。因此:

int myArray[10]={9, 3, 2, 4, 3, 2, 7, 8, 9, 11};
// myArray[9] 值是 11
// myArray[10] 是无效的,值是随机的(其他内存地址)

因此,在访问数组时应小心。访问数组末尾之后(使用大于已声明数组大小 - 1 的索引号)是从用于其他目的的内存中读取。从这些位置读取可能不会产生太多结果,只会产生无效数据。向随机内存位置写入肯定是一个坏主意,通常会导致不良结果,如崩溃或程序故障。这也可能是一个难以追踪的 bug。

与 BASIC 或  JAVA 不同,C++ 编译器不会检查数组访问是否越界。

给数组赋值

mySensVals[0] = 10;

从数组中获取值

x = mySensVals[4];

数组与 FOR 循环

数组通常在 for 循环中进行操作,其中循环计数器用作每个数组元素的索引。例如,要在串行端口上打印数组的元素,您可以这样做:

for (byte i = 0; i < 5; i = i + 1) {
    Serial.println(myPins[i]);
}

示例代码

要查看使用数组的完整程序示例,请参见(内置示例)中的(如何使用数组示例)。

扩展阅读


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|棱讯科技 ( 粤ICP备2024228160号-2|粤公网安备44030002003510号 )

GMT+8, 2024-12-22 12:18 , Processed in 0.017113 second(s), 3 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表