Arrays C语言中的多维数组初始化
我在玩Arduino,几乎没有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' } }; 因此,生成的数组将是一行
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”}代码>-它说什么?