本文主要是介绍【C语言】关于共同体的用处,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在C语言中,有很多的关键字。
//如以下关键字:
int;short;long;struct;union;enum......
当时学习时,就觉得union和enum没有什么用处。
因为union和enum可以干的事,struct和定义变量都可以直接解决。
直到后来,自己想写一个寄存器的时候才发现union的作用还是比较明显的。
寄存器操作可以大致分成:
- 对寄存器整体进行赋值。
Register =0x8;//也就是对寄存器二进制的幅值1000,高位为1其余为零。
- 对寄存器的某一位赋值。
//有的寄存器可以直接赋值。假设ocp就是Register的第4位。
ocp=1;//对寄存器的某一位直接幅值。
//若没有这种位幅值的捷径,如果整体赋值可能会改变其他位的数值。特别是当我们不知道其他位应该是啥时,通常将寄存器整体拿出来然后进行处理。
val_Register=Register;
Register = val_Register | 0x8;
显然,以上方法第一种更加具有可读性。若要实现对建立寄存器的位操作,不用union就比较难是实现。
因为union的作用是:而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
可以使用以下方法定义一个寄存器:
union jicunqi
{u4 all; //假设是一个4位的struct wei {u4 others:3;u4 ocp:1;}bit;
}Register;
该方法可以整体赋值也可以按位赋值。
//整体幅值
Register.all = 0x8;
//位幅值
Register.bit.ocp= 1;
好像就是这么回事。
这篇关于【C语言】关于共同体的用处的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!