Tag: 联合会

解释包含结构的联合的sizeof运算符的结果

#include struct mystruct { char cc; float abc; }; union sample { int a; float b; char c; double d; struct mystruct s1; }; int main() { union sample u1; int k; u1.s1.abc=5.5; u1.s1.cc=’a’; printf(“\n%c %f\n”,u1.s1.cc,u1.s1.abc); k=sizeof(union sample); printf(“%d\n\n”,k); return 0; } 运算符的大小返回8我仍然能够访问结构元素,一次多个,并且sizeof运算符仍然返回我假设的原始数据类型的最大大小。 为什么会这样? 实际分配的大小是8吗? 并且sizeof返回错误的值? 或者实际分配的大小是8 ? 那么结构是如何适应的? 如果我们使用malloc和sizeof分配一个联合数组,它会在这种情况下分配足够的空间吗? 请详细说明。