结构体与共用体与枚举之间的相互嵌套使用

在面向对象的编程中,嵌套使用有很多好处,这里对我用到的进行简单整理,后续在进行扩充

1.在共用体中嵌套结构体
说明:共用体中嵌套入结构体,是为了省内存考虑,因为共用体定义的成员变量并不是都会被用到。

typedef union
{
	struct 
	{
        int a:16;        
        int b:16; 
	};
	int temp;
	
}DataInfo;

int main()
{
    DataInfo data;
	data.temp = 20;
    printf("data = %d\n",data.a);
    printf("data 大小 =%d\n",sizeof(DataInfo));
    return 0;
}

分析:内存大小为4个字节,data.a的数值为4,同时对a和b的操作,仅仅通过对temp的操作来实现即可,如果想对b的值赋值,就对data.temp = (20<<16)

2.在结构体中嵌套共用体
这个套用网友的推荐,链接如下:这种用法的好处是对成员的实现更加的清晰,便于理解。

https://zhuanlan.zhihu.com/p/338852871

enum DATA_PKG_TYPE
{
    DATA_PKG1 = 1,
    DATA_PKG2,
    DATA_PKG3    
};struct data_pkg1
{
    // ...
};struct data_pkg2
{
    // ...
};struct data_pkg3
{
    // ...
};struct data_pkg
{
    enum DATA_PKG_TYPE data_pkg_type;
    union 
    {
        struct data_pkg1 data_pkg1_info;
        struct data_pkg2 data_pkg2_info;
        struct data_pkg3 data_pkg3_info;
    }data_pkg_info;
};
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值