簡體   English   中英

C struct語法中的括號

[英]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_SIZEbyte數組; 它不是指針,數據直接存儲在struct

復制struct (例如,將其作為普通參數傳遞給函數),數據也將被復制,因為它是struct的一部分。

(順便說一下,將數組嵌入到C中的struct中是通過值將數組傳遞給函數的唯一方法)

它代表實際數據。 它是MAX_DATA_BUFFER_SIZE byte的數組。

最后一個成員是一個字節數組,其數組大小由MAX_DATA_BUFFER_SIZE指定

data是一個字節數組,大小為MAX_DATA_BUFFER_SIZE

如果MAX_DATA_BUFFER_SIZE50 ,則數據將為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM