问题描述
我正在和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]
。