1

内部構造体に含まれるアイテムの数を追跡したい場合は、ネストされた構造体を使用する傾向があります。だから私は通常、次のことを行います。

typedef struct Product {
    char *name;
    int qty;
} Prods;

typedef struct Category {
    char *name;
    int qty;
    int prods_count;
    Prods *prod;
} Cats;

次に、次のようにデータにアクセス/解放できます。

Cats *cat = malloc(sizeof(Cats));
cat->prods_count = 10;
cat->prod = malloc(cat->prods_count, sizeof(Prods));
cat->prod[0].name = malloc(15);
strcpy(cat->prod[0].name, "Hello World!!!");
cat->prod[0].qty = 100;
for (i=0; i<cat->prods_count; i++)
    free(cat->prod[i].name);
...

1つだけでこれを行う方法があるかどうか疑問に思っていstructますか?

4

3 に答える 3

0

あなたはこれを行うことができます

typedef struct Category {
    char *name;
    int qty;
    int prods_count;
    Prods *prod;
    int * qty;
    char ** name;
} Cats;

しかし、今では1回ではなく2回mallocする必要があります。

于 2013-04-03T02:30:13.103 に答える