相关疑难解决方法(0)

为什么我们需要C联盟?

什么时候应该使用工会?我们为什么需要它们?

c unions

222
推荐指数
10
解决办法
12万
查看次数

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

#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;
}
Run Code Online (Sandbox Code Playgroud)

运算符的大小正在返回8我仍然能够访问结构元素,一次不止一个,并且sizeof运算符仍然返回我假设的原始数据类型的最大大小.为什么会这样?实际分配的大小是8?并且sizeof返回错误的值?或者实际分配的大小是8?那么结构是如何适应的?如果我们使用分配一个联合数组mallocsizeof在这种情况下分配足够的空间吗?请详细说明.

c structure sizeof unions

0
推荐指数
1
解决办法
8522
查看次数

标签 统计

c ×2

unions ×2

sizeof ×1

structure ×1