C struct语法中的括号

时间:2011-06-17 19:30:03

标签: c struct

我正在处理以下结构:

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 个答案:

答案 0 :(得分:9)

这是一个大小为byte的{​​{1}}数组;它不是指针,数据直接存储在MAX_DATA_BUFFER_SIZE

复制struct时(例如,将其作为普通参数传递给函数),数据也会被复制,因为它是struct的一部分。

(顺便说一句,将数组嵌入C中的struct是将数组按值传递给函数的唯一方法)

答案 1 :(得分:1)

它代表实际数据。它是MAX_DATA_BUFFER_SIZE byte s。

的数组

答案 2 :(得分:1)

最后一个成员是一个字节数组,其数组大小由MAX_DATA_BUFFER_SIZE指定

答案 3 :(得分:0)

data字节数组,大​​小为MAX_DATA_BUFFER_SIZE

如果MAX_DATA_BUFFER_SIZE 50 ,那么数据将是 50字节数组

答案 4 :(得分:0)

数据是一个字节数组,带有MAX_DATA_BUFFER_SIZE个元素,其大小为sizeof(byte) * MAX_DATA_BUFFER_SIZE。当你访问它时,它是一个inplace数组,因此它是实际数据,而不是指向它的指针(尽管你可以通过&a.data[0]a.data创建一个指向它的指针)