2011-06-17 4 views
2

私は、次の構造体を扱っています:カッコ

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の配列です。

9

byteのサイズはMAX_DATA_BUFFER_SIZEです。ポインタではなく、データは直接structに格納されます。

structを(通常のパラメータとして関数に渡すなどして)コピーすると、structの一部なので、データもコピーされます。

MAX_DATA_BUFFER_SIZEのサイズと、

data
0

バイトの配列である(なお、Cでstructにアレイを埋め込むこと関数に値によってアレイを通過する唯一の方法です)。

MAX_DATA_BUFFER_SIZEがた場合、データは、50バイト配列であろうが。

1

最後のメンバーはMAX_DATA_BUFFER_SIZE要素と、そのサイズがsizeof(byte) * MAX_DATA_BUFFER_SIZEになり

0

データは、バイトの配列であるMAX_DATA_BUFFER_SIZEによって指定される配列のサイズのバイトの配列です。あなたがそれにアクセスすると、それはインプレース配列なので、実際のデータであり、ポインタではありません(&a.data[0]またはa.data経由でポインタを作成できます)

関連する問題