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

问题描述

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

byte myArray[][6] = {"0"};

我知道这是在声明一个具有未指定行和6列的数组。 我不明白的是{“ 0”}。 执行此类代码后,此变量将包含什么?

谢谢!

解决方法

字符串文字extension Color { public static var textColor: Color { let color = UserDefaults.standard.bool(forKey: "redText") ? Color.red : Color.white return color } } 等效于复合文字"0"。因此,声明等同于:

(char[]){ '0','\0' }

因此,结果数组将是一行,其中包含ASCII byte myArray[][6] = { { '0','\0' } }; (或适合目标字符集的0)和5个0或NUL字节。 / p>

,

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

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

由于您未指定第一个尺寸,而仅初始化了1行,因此默认为byte 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行,所以默认为byte myArray[2][6]