我正在处理以下结构:
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(字节)?一旦我将实际数据读入“数据”成员,“数据”成员是否代表实际数据,还是只是指向它的指针?谢谢!
答案 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
创建一个指向它的指针)