скобки в синтаксисе структуры C - PullRequest
2 голосов
/ 17 июня 2011

Я имею дело со следующей структурой:

typedef PACKED struct {
   word         len;                 /* # of bytes to log (including len)*/
   word          type;                /* What kind of data is in this pkt */
   qword         time;                /* What time it was generated       */
   byte           data[MAX_DATA_BUFFER_SIZE];
} log_mobile_data_type;

Мой вопрос: что это за последний член структуры?Является ли элемент размером MAX_DATA_BUFFER_SIZE или просто 1 (байт)?И как только я считываю фактические данные в элемент данных, элемент данных представляет фактические данные, или это просто указатель на них?Спасибо!

Ответы [ 5 ]

9 голосов
/ 17 июня 2011

Это byte массив размером MAX_DATA_BUFFER_SIZE; это не указатель, данные хранятся непосредственно в struct.

Когда вы копируете struct (например, передавая его как обычный параметр функции), также копируются данные, так как это часть struct.

(Кстати, встраивание массива в struct в C - единственный способ передать массив по значению в функцию)

1 голос
/ 17 июня 2011

Последний член - это массив байтов, размер которого указан в MAX_DATA_BUFFER_SIZE

1 голос
/ 17 июня 2011

Представляет фактические данные. Это массив MAX_DATA_BUFFER_SIZE byte с.

0 голосов
/ 17 июня 2011

data - это массив байтов с MAX_DATA_BUFFER_SIZE элементами, его размер будет sizeof(byte) * MAX_DATA_BUFFER_SIZE. когда вы обращаетесь к нему, это массив на месте, то есть это фактические данные, а не указатель на них (хотя вы можете создать указатель на него через &a.data[0] или a.data)

0 голосов
/ 17 июня 2011

data - это массив байтов , с размером MAX_DATA_BUFFER_SIZE.

Если бы MAX_DATA_BUFFER_SIZE было 50 , тогда данные были бы массивом из 50 байтов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...