其他分享
首页 > 其他分享> > 位段 联合体

位段 联合体

作者:互联网

柔性数组

结构体中最后一个元素允许是未知大小的数组,这就叫柔性数组成员

柔性数组特点:

//柔性数组的使用
struct st_type
{
    int i;
    int a[];
}
int main()
{
    //创建struct st_type类型的对象
    struct st_type* p=(struct st_type)malloc(sizeof(struct st_type)+sizeof(int)*10);
}

位段

位段中的位指的是二进制位。

struct A
{
	int _a : 2;//占2个位
	int _b : 4;//占4个位
	int _c : 6;//占6个位
};

位段的内存分配

位段的跨平台问题

联合体(共用体)

共用体顾名思义就是共同使用一块空间,所以共用体的大小 最小应该是成员中 最大的成员的大小。(因为共用体得有能力保存最大的成员)。

//定义
union A
{
    short b;
    int a;
}

联合体的大小如何计算

联合体的大小最小是 联合体中最大的成员的大小。

如果不是最大对齐数的整数倍还需要对齐到最大对齐数的整数倍。

面试题–判断大小端

#include<stdio.h>
union A
{
	int a;
	char b;
};
int main()
{
	union A a;
	a.a = 1;
	if (a.b == 1)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

标签:struct,int,成员,联合体,位段,数组,柔性
来源: https://blog.csdn.net/weixin_46383092/article/details/120469745