0

C对我来说就像中文,但我必须使用一些代码

struct Message {
    unsigned char      state;
};

char state   [4][4] = { "OFF", "ON", "IL1", "IL2" };

这是一个接收消息的简单服务器。它的 Struct 部分很明显,但是还有那个 char 数组的东西。这是否说有 4 个不同的字符数组,每个数组包含 4 个字符?这里到底发生了什么?我知道这听起来很愚蠢,但我无法弄清楚。

4

5 回答 5

2

这意味着它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]
于 2012-05-16T13:43:07.177 回答
2

这是一个二维数组。它创建一个由 4 个元素组成的数组,每个元素都是一个 4 个字符的数组。

于 2012-05-16T13:43:54.700 回答
2

这是否说有 4 个不同的字符数组,每个数组包含 4 个字符?

完全正确:state是一个由四个char子数组组成的数组。

每个子阵列有四个chars长。相应的字符串文字 ( "OFF"etc) 用 NUL 填充到四个字符,然后复制到子数组中。

于 2012-05-16T13:44:14.643 回答
0

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].

于 2012-05-16T13:45:08.750 回答
0

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.

于 2012-05-16T13:45:40.340 回答