C/C++言語で構造体を初期化する方法

C/C++言語でプログラム経験のある方に質問です。
以下のような構造体をどういう方法で初期化していますか?

typedef struct {
char c;
int i;
double d;
char *s;
} Foo;

回答の条件
  • 回答したユーザーを表示
  • 途中経過を公開
  • 男性,女性
  • 20代未満,20代,30代,40代,50代,60代以上
  • 登録:2012/06/02 14:27:52
  • 終了:2012/06/09 14:30:02

回答(4 / 50件)

Q01C言語でのプログラム経験年数は?(択一)

なし0
1年~3年1
id:uxoru
4年~6年0
7年~9年0
10年以上3
id:yossiy7id:cogenid:Vacuum
合計4

Q02C言語ではどういう方法で構造体を0初期化していますか?(複数選択)

foo.c = 0; foo.i = 0; …0
memset(&foo, 0, sizeof foo);3
id:uxoruid:yossiy7id:Vacuum
ZeroMemory(&foo, sizeof foo);0
Foo foo = {0};1
id:cogen
合計4

Q03C++言語でのプログラム経験年数は?(択一)

なし0
1年~3年2
id:uxoruid:cogen
4年~6年0
7年~9年0
10年以上2
id:yossiy7id:Vacuum
合計4

Q04C++言語ではどういう方法で構造体を0初期化していますか?(複数選択)

foo.c = 0; foo.i = 0; …1
id:yossiy7
std::memset(&foo, 0, sizeof foo);0
ZeroMemory(&foo, sizeof foo);2
id:uxoruid:Vacuum
Foo foo = {0};0
Foo foo = {};1
id:cogen
合計4
  • id:standard_one
    出だしの char c; が引っ掛けっぽく見えなくもないけど
    完全にコンパイラ依存でしょ
  • id:yossiy7
    C++だとあとでメソッドに別クラスのインスタンスが加わったらmemset()原因で暴走する可能性もあるから、いちいち全部初期化したりします


  • id:Bookmarker
    memset(),ZeroMemory()での0初期化は処理系依存で、double(浮動小数)やchar *(ポインター)は正常に0初期化されない可能性があります。
    あと、C++だと誤ってクラスのオブジェクトを破壊する危険性が高いですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません