質問1
私は次のような構造体を持っています、
struct foo
{
int a;
char c;
};
私が言うときsizeof(foo)
、私は8
自分のマシンに乗っています。私の理解では、int に 4 バイト、char に 1 バイト、パディングに 3 バイトです。あれは正しいですか?上記のような構造体が与えられた場合、パディングとして追加されるバイト数をどのように確認できますか?
質問2
sizeof
配列のサイズを計算するために使用できることを認識しています。foos
ほとんどの場合、 ( is an array of foo
)のような使用法を見てきました
sizeof(foos)/sizeof(*foos)
しかし、以下でも同じ結果が得られることがわかりました。
sizeof(foos) / sizeof(foo)
これら2つに違いはありますか?どちらが好ましいですか?
質問 3
次のステートメントを検討してください。
foo foos[] = {10,20,30};
するとsizeof(foos) / sizeof(*foos)
、2になります。しかし、配列には3つの要素があります。ステートメントを次のように変更すると、
foo foos[] = {{10},{20},{30}};
正しい結果が得られます 3.なぜこれが起こっているのですか?
何かご意見は..