2011-06-17 79 views
2

我處理下面的結構:括號中的C結構語法

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

你嘗試'sizeof'並檢查結果?那會回答你的問題,不是嗎? –

回答

1

它代表實際數據。它是一個數組MAX_DATA_BUFFER_SIZEbyte s。

9

這是一個byte數組的大小MAX_DATA_BUFFER_SIZE;它不是指針,數據直接存儲在struct中。

當您複製struct(例如,將其作爲普通參數傳遞給函數)時,數據也將被複制,因爲它是struct的一部分。

(順便說一下,嵌入的陣列成在C struct是通過值傳遞數組給函數的必由之路)

0

data陣列字節的,具有MAX_DATA_BUFFER_SIZE大小。

如果MAX_DATA_BUFFER_SIZE是,則數據將是一個陣列的50個字節

1

最後構件是與所述陣列的大小的字節數組通過MAX_DATA_BUFFER_SIZE被指定

0

數據是字節的數組,與MAX_DATA_BUFFER_SIZE元件,它的尺寸將是sizeof(byte) * MAX_DATA_BUFFER_SIZE。當你訪問它,它是一個就地陣列,因此它是實際的數據,而不是它的指針(儘管你可以通過&a.data[0]a.data創建一個指向它的指針)