C Char多维数组定义

时间:2012-05-16 13:40:29

标签: c arrays

C对我来说就像中文一样,但是我需要处理一些代码

struct Message {
    unsigned char      state;
};

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

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

5 个答案:

答案 0 :(得分: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]

答案 1 :(得分:2)

这是一个二维数组。它创建了一个包含4个元素的数组,每个元素都是一个4 char的数组。

答案 2 :(得分:2)

  

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

这是完全正确的:state是一个包含四个char子阵列的数组。

每个子阵列长度为chars。相应的字符串文字("OFF"等)用NUL填充到四个字符,并复制到子数组中。

答案 3 :(得分:0)

最后声明的

char state [4] [4]是一个2维数组,每行有4行,每行4列。您分配的值将存储在状态[0] [0],状态[0] [1],状态[0] [2],状态[0] [3]的位置。

答案 4 :(得分:0)

在C中,您将字符串处理为char*char的数组。因此,当你有一个字符串数组时,你有一个字符数组的数组。