C/C++構造体初期化
単純な構造体データの場合:
これで直接初期化すればいいです.しかし、構造体にクラスが1つ含まれている場合、このように初期化すると深刻な問題が発生し、2回目の使用で初期化に成功せず、プログラムがクラッシュすることになります.次のようになります.
次のようになります.
クラス(string)の存在が含まれているため、通常の方法で初期化することはできません
struct A
{
int a;
int b;
};
A temp[4] = { 0 };
これで直接初期化すればいいです.しかし、構造体にクラスが1つ含まれている場合、このように初期化すると深刻な問題が発生し、2回目の使用で初期化に成功せず、プログラムがクラッシュすることになります.次のようになります.
struct A
{
int a;
int b;
string c;
};
A temp[4] = { 0 }; //error
次のようになります.
struct A
{
int a;
int b;
string c;
};
/*
*temp:
*len:
*/
int InitAStruct(A *temp,int len)
{
for (int i = 0;i < len;i++) {
temp->a = 0;
temp->b = 0;
temp->c = "";
++temp;
}
return 0;
}
//A temp[4] = { 0 }; //error
A temp[4];
InitAStruct(temp,4);//right
クラス(string)の存在が含まれているため、通常の方法で初期化することはできません