在struct中的struct内部结构

时间:2014-05-04 21:14:28

标签: c struct malloc unions

你好说我有这个代码

typedef struct entry {
    union {
        struct A {
            char  *c;
        } *A;
        struct B {
            char *c;
        } *B;
    } value;
} *TableEntry;

我正在做一个malloc用于输入,现在我想将一个字符串复制到结构A中的c。我是否必须为结构A分配内存,然后为c或第一个malloc分配表的所有内容?提前谢谢你

3 个答案:

答案 0 :(得分:3)

你必须为他们两人分配内存

答案 1 :(得分:2)

分配TableEntry时 - 为整个联合分配内存。其中的指针是分配的,但它们指的是 - 不是。因此,您应该为结构的c成员和工会的A / B成员分配值。

请注意,AB共享相同的空间。

答案 2 :(得分:0)

为了澄清,需要三个分配,例如:

TableEntry *t = malloc(sizeof *t);
t->A = malloc(sizeof *t->A);
t->A->c = malloc(50);

但这种设计值得怀疑,因为无法告知AB当前有效的内容。您必须有另一个索引或其他内容来跟踪此条目是A还是B