• ベストアンサー

sizeof が分かりません!

Cの予約語で"sizeof"がありますが、 普段おきまりで良く使っているのですが、 いまいち理解出来ないので誰か教えて下さい。 例えば、以下の場合sizeofの結果はどうなりますか? char s_aaa[]="ABCDE"; char s_bbb[4]; memset(s_bbb, '\0', sizeof(s_bbb)); memcpy(s_bbb, s_aaa, sizeof(s_bbb)); printf("s_aaa → :[%d],[%d]\n", strlen(s_aaa), sizeof(s_aaa)); printf("s_aaa → :[%d],[%d]\n", strlen(s_bbb), sizeof(s_bbb));

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

No.1の回答にある通り、実行すればわかります。 と言うか「実行しないとわかりません」が正解。 sizeofは「指定のオブジェクトを格納するに足るメモリサイズをバイト数で返す」と言う事になっていて「格納するに足るメモリサイズ」は処理系に依存するので、実際に実行してみないと判らないのです。 「処理系に依存する」とは「Aのコンパイラでは結果はAに合わせて、Bのコンパイラでは結果はBに合わせて、コンパイラごとに違う」と言う意味です。 言い換えれば「この実行環境では結果が8になり、別の実行環境では結果が4になり、また別の実行環境では結果が6になるかも知れない」と言う事です。 「実際に実行してみないと判らない」とだけ理解しておけば充分です。

その他の回答 (1)

回答No.1

> 例えば、以下の場合sizeofの結果はどうなりますか? 質問するようなことではないでしょう。 コンパイルし、実行すればわかります。

関連するQ&A