struct
?student

{
char
?name[
10
];
long
?sno;
char
?sex;
float
?score[
4
];
}
?;


main()

{
struct
?student?a[
1
];

??
long
??sno?;
??
char
?name[
10
];
??
float
?score[
4
];
??
char
?sex?;

printf(
"
\n\n%d\n
"
,
sizeof
(a));
printf(
"
%d\n
"
,
sizeof
(score)
+
sizeof
(sex)
+
sizeof
(name)
+
sizeof
(sno));

}
輸出的都是 31
?
typedef?union?student


{char?name[10];
long?sno;
char?sex;
float?score[4];
}?Stu??;


main()


{?Stu?a[1];

??long??sno?;
??char?name[10];
??float?score[4];
??char?sex?;

printf("\n\n%d\n",sizeof(a));
printf("%d\n",sizeof(score)+sizeof(sex)+sizeof(name)+sizeof(sno));

}輸出的為16,31,
結構和聯合有下列區別:
1. 結構和聯合都是由多個不同的數據類型成員組成, 但在任何同一時刻, 聯合轉只存放了一個被選中的成員, 而結構的所有成員都存在。
2. 對于聯合的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對于結構的不同成員賦值是互不影響的。