C对我来说就像中文,但我必须使用一些代码
struct Message {
unsigned char state;
};
char state [4][4] = { "OFF", "ON", "IL1", "IL2" };
这是一个接收消息的简单服务器。它的 Struct 部分很明显,但是还有那个 char 数组的东西。这是否说有 4 个不同的字符数组,每个数组包含 4 个字符?这里到底发生了什么?我知道这听起来很愚蠢,但我无法弄清楚。
这意味着它state
是一个由 4 个 char 数组组成的数组,每个数组都是一个 4 个 char 数组,它们被初始化为“OFF\0”、“ON\0”、“IL1\0”和“IL2\0”值"
+----+----+----+----+
state => |OFF |ON |IL1 |IL2 |
+----+----+----+----+
^state[0]
^state[1]
^state[2]
^state[4]
这是一个二维数组。它创建一个由 4 个元素组成的数组,每个元素都是一个 4 个字符的数组。
这是否说有 4 个不同的字符数组,每个数组包含 4 个字符?
完全正确:state
是一个由四个char
子数组组成的数组。
每个子阵列有四个chars
长。相应的字符串文字 ( "OFF"
etc) 用 NUL 填充到四个字符,然后复制到子数组中。
char state[4][4] declared at the end is a 2 dimensional array having 4 rows with 4 columns in each row. The values you have assigned will be stored into positions state[0][0], state[0][1], state[0][2], state[0][3].
In C, you deal with strings as char*
, or arrays of char
. Therefore, when you have an array of strings, you have an array of an array of chars.