union使用

在can网络中,解析can数据可能最简单的方法就是用union了

类struct但又不一样,我们在解析、读取can数据时显得不要太方便

可以先看这里

用法如下:

	union un_demo{
		struct {
			unsigned char n1 : 2;
			unsigned char n2 : 6;
			unsigned char n3;
			unsigned char n4 : 1;
		}st_demo;
		unsigned char n[3];
	};

看这个结构实际已经很明确了,可以理解为union中,这两个对应的数据一样。

解析即:赋值给n数组,则其他可直接取值

要想获得整个数据,则对应的数据项赋值完成后,直接取数组即可。

表面可以这么理解,实际为什么呢?

联合体也叫共用体,即在内存中定义的不同数据类型共享同一段内存,这已经很明显了

 

union foo{/*“共用”类型“FOO”*/

 

    int i;    /*“整数”类型“i”*/

    char c;   /*“字符”类型“C”*/

    double k;  /*“双”精度类型“K”*/

};

最大长度多少呢?没错,就是double的长度

下面这个呢?

 

union foo{/*“共用”类型“FOO”*/

 

    char s[10];    /*“字符”类型的数组“S”下面有“10”个元素*/

        int i;        /*“整数”类型i*/

};

这个是12,int的整数倍,比10大即12.若改为double,则是16,double(8)明显不够,则*2.

需要注意的地方:

对于共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了;

,共用体只存放了一个被选中的成员

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值