0
struct abc {
    double matrix[2][2];
};

int main(){
   abc test;
   test.matrix[2][2]={0,0,0,0};
}

abc という構造体を作成し、2*2 行列がそのメンバーです。しかし、メイン関数でマトリックスを初期化する方法は? 上記のコードには常にエラーが発生します...どうすれば修正できますか?

4

2 に答える 2

0

これ とこれも参照

あなたは書ける:

struct abc 
{
    int foo;
    double matrix[2][2];
};

void f()
{
   abc test = 
       { 
        0,        // int foo; 
        {0,0,0,0} // double matrix[2][2];
       };

}

配列fooの周りに追加のセットがある理由を明確にするために追加しました。{}

この種の構造体の初期化はaggregate data type、大まかに C リンク構造体を意味する でのみ使用できることに注意してください。

本当に構築してから割り当てる必要がある場合は、次のようなことが必要になる場合があります。

struct Matrix
{
    double matrix[2][2];
};

struct abc2 
{       
    int foo;
    Matrix m;
};

void g()
{
   abc2 test;
   Matrix init =  { 5,6,7,8};
   test.m = init;
}
于 2013-09-09T05:21:26.440 に答える