我有三个结构体,它们共享第一个字段的类型和名称:
struct TYPEA {
char *name;
int x,y; /*or whatever*/
};
struct TYPEB {
char *name;
float a[30]; /*or whatever*/
};
struct TYPEC {
char *name;
void *w,*z; /*or whatever*/
};
如果我没记错的话,结构体的第一个字段需要从结构体本身的起始地址开始。这让我想知道联合体是否也是如此:
union data {
struct TYPEA;
struct TYPEB;
struct TYPEC;
};
union data *p = function_returning_a_sane_default_for_union_data();
printf("%s", (char*) p);
关于此事我有两个问题:
- 标准要求联合体的内容始终位于同一地址吗?
- 如果结构体仅在名称上不同,但所有字段都相同,是否可以使用?
struct
中。 - too honest for this site