嵌入式C中结构与联合的区别
在本系列的前一篇文章中,我们讨论了嵌入式C中的结构允许我们对不同数据类型的变量进行分组,并将它们作为单个数据对象处理。除了结构之外,C语言还支持另一种称为联合的数据结构,它可以将不同的数据类型分组为单个数据对象。本文将提供有关联合的一些基本信息。我们首先来看一下声明一个union的介绍性例子,然后我们将研究这个数据对象的一个重要应用。
介绍性实例
声明联合和声明结构非常类似。我们只需要将关键字“struct”替换为“union”。请考虑以下示例代码:
union test {
uint8_t c;
uint32_t i;
};
这指定了一个具有两个成员的模板:“c”(占用一个字节)和“i”(占用四个字节)。现在,我们可以创建此联合模板的变量:
union test u1;
使用成员运算符(.),我们可以访问“u1”联合的成员。例如,以下代码将10分配给上述联合的第二个成员,并将“c”的值复制到“m”变量(必须是uint8_t类型)。
u1.i=10;