【发布时间】:2017-07-01 01:30:38
【问题描述】:
我打算用一个 Arduino 来演奏一段旋律,旋律被分成 11 个部分,存储在一个名为 notes 的数组中
代码如下:
String notes[0][]={"do", "re", "mi", "fa"};
String notes[1][]={"so", "rest", "mi", "do", "rest", "so", "rest", "fa", "re", "rest",
"fa", "rest", "re", "ti", "rest", "fa", "rest", "mi", "do", "rest"};
String notes[2][]={"rest", "si,", "do", "fa", "mi", "so", "do", "rest", "mi"
"fa", "mi", "fa", "mi", "fa", "mi", "do", "re"};
String notes[3][]={"la,", "la", "so", "fa", "mi", "fa", "so", "do", "do",
"rest", "mi", "fa", "mi", "do", "fa", "mi", "do", "la", "so", "rest"};
String notes[4][]={"rest", "so,", "so,", "fa", "mi", "re", "mi", "do"};
String notes[5][]={"la", "ti", "so", "fa", "so", "fa",
"fa", "mi", "re", "mi", "re", "do", "ti,", "do", "ti,", "la,", "so,"};
String notes[6][]={"rest", "do", "ti,", "do", "so,", "rest"};
String notes[7][]={"do", "ti,", "do", "mi", "rest"};
String notes[8][]={"fa", "mi", "re", "do", "fa", "mi", "re", "do", "do", "re", "re", "do`", "re`"};
String notes[9][]={"rest", "do", "ti,", "do", "so", "fa", "fa", "fa", "fa", "fa", "mi", "re", "mi",
"rest", "re", "mi", "fa", "mi", "mi", "mi", "re", "do", "mi", "rest"};
String notes[10][]={"la,", "ti,", "do", "re", "la,", "la,", "ti,", "do", "re", "do", "so"};
当我尝试编译它时,它会返回一条错误消息,说明
将'notes'声明为多维数组必须有边界 除第一个维度外的所有维度
那么如果我想保持数组中的内容不变该怎么办呢?
【问题讨论】:
-
数组的每一行的大小必须相同。您可以通过将所有小数组括在大括号中来声明整个数组,即
String notes[][] = { {..}, {..}, {..} }。 -
@Grifplex 不,必须指定最后一个维度
-
@M.M 那么如果我将最后一个维度的大小定义为,例如10,如果一行只有5个项目,那么该行中剩余槽的值是多少?跨度>
-
@AgnesLeung 它们将包含空字符。我建议进行设计更改:使用
enum代替字符串,使数组成为包含枚举值的 1 字节元素的数组,然后当您想要获取字符串时,有一个查找表,其中枚举值转换到一个字符串 -
这是一种对微控制器编程的糟糕风格,如果您知道矩阵的元素,最好创建一个静态和常量元素数组。
标签: c++ arrays arduino arduino-ide