0

これを機能させるにはどうすればよいですか?顧客に割り当てられる請求書の数がわからず、動的のままにしたいと考えています。助けてください。

#include <stdio.h>
#include <stdlib.h>

typedef struct _cust{
    int id;
    int invoices[][2];
} cust;

cust account[] = {
    {1,{10,100}},
    {2,{{10,100},{20,200}}},
    {3,{{10,100},{20,200},{30,300}}}
};

int main(void) {
    printf("%d\n", account[0].invoices[0][0]);
    printf("%d\n", account[1].invoices[1][0]);
    printf("%d\n", account[2].invoices[2][0]);
    return 0;
    }

このコードを実行すると、次のエラーが発生します...

error: initialization of flexible array member in a nested context

この int 請求書 [3] [2] のような数字を入力すると、コードは正常に実行されます。

4

2 に答える 2

1

に変更invoicesしてからint** invoices、 を使用して動的に割り当てることができますmalloc()。次のように 2D 配列を割り当てることができます。

int** theArray;
theArray = (int**) malloc(arraySizeX*sizeof(int*));
for (int i = 0; i < arraySizeX; i++)
   theArray[i] = (int*) malloc(arraySizeY*sizeof(int));
于 2013-04-01T16:41:55.200 に答える