C语言中的联合(union)类型为我们提供了操纵和解读“数据”的独特方式,它允许对同一块内存以不同的方式进行解读和操纵。
union UINT {
unsigned int intValue; //占4个字节
unsigned char bytes[4]; //占4个字节
}; //注意末尾分号不能少
本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者"海洋饼干叔
叔";本文不允许以纸质及电子出版为目的进行抄摘或改编。
1.《Python编程基础及应用》,陈波,刘慧君,高等教育出版社。免费授课视频 Python编程基础及应用
2.《Python编程基础及应用实验教程》, 陈波,熊心志,张全和,刘慧君,赵恒军,高等教育出版社Python编程基础及应用实验教程
3. 《简明C及C++语言教程》,陈波,待出版书稿。免费授课视频
上述代码定义了一个名为UINT的联合类型。该类型提供了两个成员,分别是unsigned int类型的intValue,以及元素类型为unsigned char的长度为4的字符数组bytes。这两个成员的内存空间是共享的,即一个union UNIT类型的对象只占4个字节的空间。当以成员intValue进行操作时,这4个字节的内存被当成一个unsigned int进行操纵和解读;当以成员bytes进行操作时,这4个字节的内存被当成一个4字节的字符数组进行操纵和解读。
我们通过下述C语言程序来解释联合类型的使用方法。
//Project - UnionExample
#include <stdio.h>
union UINT {
unsigned int intValue; //占4个字节
unsigned char bytes[4]; //占4个字节
}; //注意末尾分号不能少
int main() {
union UINT v = {
.intValue=0x11223344};
printf("&v = %p, &v.intValue = %p, v.bytes = %p\n",
&v, &v.intValue,