#include<stdio.h>
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运算符仍然返回我假定的基本数据类型的最大大小。为什么会有这种行为?实际分配的大小是否8sizeof返回了错误的值?或者实际分配的大小是8?那么这个结构是如何容纳的呢??如果我们使用mallocsizeof分配联合数组,在这种情况下它会分配足够的空间吗?请用硼酸盐。

最佳答案

通常,工会的规模是其最大成员的规模。最大的成员[可能]是您的struct成员以及double成员。都是8号的。所以,正如sizeof正确地告诉你的,工会的规模确实是8。
你为什么觉得奇怪?为什么称8为“错误值”?

09-04 14:58
查看更多