Arrays C语言中的多维数组初始化

Arrays C语言中的多维数组初始化,arrays,multidimensional-array,arduino,arduino-ide,arduino-c++,Arrays,Multidimensional Array,Arduino,Arduino Ide,Arduino C++,我在玩Arduino,几乎没有C语言编程。 在查看一些示例代码时,我遇到了以下数组变量声明: byte myArray[][6] = {"0"}; 我知道这是在声明一个包含未指定行和6列的数组。 我不明白的是{“0”}。 在执行这类代码时,这个变量将包含什么 谢谢 字符串literal“0”相当于复合literal(char[]){0','\0'}。因此,该声明相当于: byte myArray[][6] = { { '0', '\0' } }; 因此,生成的数组将是一行

我在玩Arduino,几乎没有C语言编程。 在查看一些示例代码时,我遇到了以下数组变量声明:

byte myArray[][6] = {"0"};
我知道这是在声明一个包含未指定行和6列的数组。 我不明白的是{“0”}。 在执行这类代码时,这个变量将包含什么

谢谢

字符串literal
“0”
相当于复合literal
(char[]){0','\0'}
。因此,该声明相当于:

byte myArray[][6] = { { '0', '\0' } };

因此,生成的数组将是一行,其中包含一个ASCII
0
(或一个适用于任何目标字符集的
0
),后跟5
\0
或NUL字节。

表达式将初始化一个如下所示的数组:

               myArray[0][0]
                     ^
                     |   +----> myArray[0][1]
                     |   |
                   +---+----+---+---+---+---+
myArray[0] ----->  |'0'|'\0'|   |   |   |   |
                   +---+----+---+---+---+---+
由于您不指定第一个维度,并且只初始化了一行,因此它默认为
字节myArray[1][6]

如果要使用以下命令初始化阵列,例如:

byte myArray[][6] = {"0", "1"};
那就是:

               myArray[0][0]
                     ^
                     |    +----> myArray[0][1]
                     |    |
                   +---+----+---+---+---+---+
myArray[0] ----->  |'0'|'\0'|   |   |   |   |
                   +---+----+---+---+---+---+
myArray[1] ----->  |'1'|'\0'|   |   |   |   |
                   +---+----+---+---+---+---+                    
                     ^    |
                     |    |
           myArray[1][0]  |
                          +--->myArray[1][1]

在这种情况下,因为您初始化了2行,所以它默认为
字节myArray[2][6]

Arduino语言是Arduino-C++,而不是C。只需尝试
字节myArray[][6]={“123456”}-它说什么?