2012-05-16 4 views
0

C, как китайский для меня, но я должен работать с некоторым кодомC Char многомерного массива Определение

struct Message { 
    unsigned char  state; 
}; 

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

Это простой сервер, который получает сообщение. Часть Struct является очевидной, но затем theres, что char массив вещь. Означает ли это, что 4 различных массива символов, каждый из которых содержит 4 символа? Что именно здесь происходит? Я знаю, что это звучит глупо, но я не могу понять это.

+0

Да, то есть в этом случае 3 char + null char – DGomez

+0

'C, как китайский для меня', не является ли это высшей фразой для отсева ИТ-колледжа? – Ulterior

+0

Я не знаю, мои друзья все закончили :( – FWeigl

ответ

2

Это означает, что state представляет собой массив из 4 массивов символов, каждый из которых представляет собой массив из 4 символов, и они инициализируются значениями «ВЫКЛ. \ 0», «ВКЛ \ 0», «ИЛ1 \ 0», и "IL2 \ 0"

  +----+----+----+----+ 
state => |OFF |ON |IL1 |IL2 | 
     +----+----+----+----+ 
     ^state[0] 
       ^state[1] 
        ^state[2] 
         ^state[4] 
+0

Итак, {«OFF», «ON», «IL1», «IL2»} часть просто «называет» «строки» массива? – FWeigl

+0

Это содержимое массива – MByD

+0

Итак, поскольку все они являются 3-символьными, состояние char [4] [3] было бы достаточно, правильно? – FWeigl

2

Это двухмерный массив. Он создает массив из 4 элементов, каждый из которых представляет собой массив из 4 символов.

2

Означает ли это, что существует 4 различных массива символов, каждый из которых содержит 4 символа?

Вот именно: state представляет собой массив из четырех char подмассивов.

Каждая подматрица представляет собой четыре chars. Соответствующий строковый литерал ("OFF" и т. Д.) Дополняется нулями до четырех символов и копируется в подматрицу.

0

состояние char [4] [4], объявленное в конце, представляет собой двумерный массив, имеющий 4 строки с 4 столбцами в каждой строке. Значения, которые вы назначили, будут сохранены в состоянии положения [0] [0], состоянии [0] [1], состоянии [0] [2], состоянии [0] [3].

0

В C вы имеете дело со строками как char*, или массивами char. Поэтому, когда у вас есть массив строк, у вас есть массив массивов символов.

Смежные вопросы