2010-12-01 21 views
0

構造体の配列を渡すときに、配列のサイズを渡す必要がある標準配列(つまり整数配列)とよく似ています。しかし、私がまだ理解していないことは、sizeof構造体の最初の要素を取ると、4(最初の要素に4バイトを意味する)が得られるということです。構造体配列を関数に渡してsizeof演算を実行する

私は文字列だけを含む構造体の配列を渡します。私は単一の配列要素のサイズを調べます(それは1つの構造体であることを覚えています)。私は28のようなものを取得しますが、関数に渡した後(はい、関数に渡されます。私の配列の最初の要素)、私は4を取得します。

私はsizeofが配列内の私の構造体の最初の要素を取得していると思います。私ははsizeofは、 "名前" を見ていると推定

体mystruct { 文字列名 文字列のアドレス 文字列の郵便番号 }

:だから私は、型体mystructの私の配列myarrayのがありますか?しかし、私は名前が4バイト長ではないという事実を知っています - それは10です。

正確に何を見ていますか?メモリ構造は構造体の配列のように見えますか?

おかげ トーマス

+1

質問する際に言語を明記してください。 – TelegramSam

答えて

0

4は、あなたがそれが参照する構造体の大きさではなく、合格したポインタのサイズになります。

+0

ああ(私の記事を参照)。私はそれを逆参照しようとしました、そして、私は32を取得しました。なぜ私のリストの最初の要素は、私が10文字の文字列であると定義した型ですか? – Prof

+0

私たちはあなたの構造体定義とプラットフォームとコンパイラの知識なしでは答えられません –

0

sizeof()はオブジェクトではなく型で動作します。 sizeof(some_object)は暗黙的に - 擬似記法 - ""を使用しています。