![](/img/trans.png)
[英]Question about C Syntax: Nested curly brackets for struct declaration mid-function?
[英]brackets in C struct syntax
我正在處理以下結構:
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(字節)? 一旦我將實際數據讀入“數據”成員,“數據”成員是否代表實際數據,還是只是指向它的指針? 謝謝!
它是一個大小為MAX_DATA_BUFFER_SIZE
的byte
數組; 它不是指針,數據直接存儲在struct
。
復制struct
(例如,將其作為普通參數傳遞給函數),數據也將被復制,因為它是struct
的一部分。
(順便說一下,將數組嵌入到C中的struct
中是通過值將數組傳遞給函數的唯一方法)
它代表實際數據。 它是MAX_DATA_BUFFER_SIZE
byte
的數組。
最后一個成員是一個字節數組,其數組大小由MAX_DATA_BUFFER_SIZE指定
data
是一個字節數組,大小為MAX_DATA_BUFFER_SIZE
。
如果MAX_DATA_BUFFER_SIZE
為50 ,則數據將為50字節的數組 。
data是一個byte數組,帶有MAX_DATA_BUFFER_SIZE
元素,其大小為sizeof(byte) * MAX_DATA_BUFFER_SIZE
。 當你訪問它時,它是一個inplace數組,因此它是實際的數據,而不是指向它的指針(雖然你可以通過&a.data[0]
或a.data
創建一個指向它的指針)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.