写作原由,今晚再次查了typedef用法,就在这用着查着中做着一个个项目,可我还是记不住;脑子里装得是什么? 

typedef struct
问题1:
请高手帮忙解释以下几种结构体定义的区别: struct{ int x; int y; }test1; struct test {int x; int y; }test1; typedef struct test {int x; int y }text1,text2; 这几种方法把小弟弄得头疼,不胜感激!
(1) struct{ int x; int y; }test1; 好,定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了。 (2) struct test {int x; int y; }test1; 好,定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了。 与 1 比,省写 了 test (3) typedef struct test {int x; int y; // 你漏打分号,给你添上 }text1,text2; 只说了 这种结构 的(类型)别名 叫 text1 或叫 text2 真正在语句里用,还要写: text1 test1; 然后好用 test1.x test1.y 或写 text2 test1; 然后好用 test1.x test1.y (4)type struct {int x; int y; }test1; 这个不可以。 改 typedef ... 就可以了。 但也同 (3)一样,还要 写: test1 my_st; 才能用 my_st.x 和 my_st.y
typedef union
问题2:
#include <stdio.h> typedef union {long i; int k[5]; char c; }DATE; struct date { int cat; DATE cow; double dog; }too; DATE max; main() {printf("%d ",sizeof(struct date)+sizeof(max));} 程序结果为52,搞不懂……希望能给出详细解题过程!!! int k[5]是占几个字节呀??20还是10呀??
union是公用的,所以DATA的大小是int k[5] =4*5 = 20 struct 是自己用自己的,所以大小是4+20+8 = 32 结果就是52