構造体のサイズを求めるにはどうしたらいいですか?
struct a
{
char *c;
char b;
};
sizeof(a)とは何ですか?
27
3
struct a
{
char *c;
char b;
};
sizeof(a)とは何ですか?
これは、アーキテクチャや基本データ型の扱い方によって異なります。また、システムが自然な整列を必要とするかどうかにも依存します。
厳密ではなく構造体のことだと思いますが、32ビットシステムでは、コンパイラが構造体をパディングするかどうかによって、5バイトか8バイトのどちらかになります。
'strict' ではなく 'struct' で、 'char' ではなく 'char' のことではないかと思います。
サイズは実装に依存します。 ほとんどの 32-bit システムでは、おそらく 5 バイトで、4 バイトがポインタ、1 バイトが char になります。 アライメントは関係ないと思います。 しかし、もし 'c' と 'b' を入れ替えたら、サイズは8バイトになるかもしれません。
OK、試しに(g++ 4.2.3、-gオプション付き)やってみたら、8が出たよ。