美文网首页
C初阶8:联合体

C初阶8:联合体

作者: jdzhangxin | 来源:发表于2019-04-05 10:49 被阅读0次
  1. 语法
union 联合体类型名 {
    成员
};

用法与struct一样。不同点是所有成员公用相同的内存空间。联合体的sizeof是成员中大小最大的值。

联合体是成员共用内存空间。

例如:

union Test{
    int n;
    double b;
};

printf("%ld\n",sizeof(union Test));
u.b = 0;
u.n = 0;
printf("u.n=%d u.b=%f\n",u.n,u.b);
u.b = M_PI;
printf("u.n=%d u.b=%f\n",u.n,u.b);

绘制下面结构体和联合体的数据布局图。

union UTest{
    int n;
    double b;
};

struct STest{
    int n;
    double b;
};
  1. 示例
    按从低到高的顺序打印出int类型每个字节的对应的数值(十六进制)。请绘制出数据布局图。
union IntByte{
  int n;
  char c[sizeof(int)];
};
union IntByte b;
b.n = 1234;
int i;
printf("%08X\n",b.n);
for(i=0;i<sizeof(int);++i){
    printf("%p\t%02hhX",b.c+i,b.c[i]);
}
printf("\n");
  1. 如何判断一个系统是大端还是小端?
union EndianTest{
    int8_t u[4];
    int32_t i;
};

static bool isLittleEndian(){
    EndianTest et;
    et.i = 1;
    return et.u[0] == 1;
}

相关文章

  • C初阶8:联合体

    语法 用法与struct一样。不同点是所有成员公用相同的内存空间。联合体的sizeof是成员中大小最大的值。 联合...

  • C语言基础及指针⑩预编译及jni.h分析

    接续上篇C语言基础及指针⑨联合体与枚举 在上篇中我们了解了 , 多类型集合的联合体 , 固定值集合的枚举 , 内容...

  • (五)C语言之联合体,枚举与IO

    (五)C语言之联合体,枚举与IO 一、联合体(共用体) 1、定义 不同类型的变量共同占用一段内存(相互覆盖),联合...

  • C初阶5:指针

    1. 指针运算 1.1 算术运算 加减+、-指针与整数相加:表示指针指向下个变量。指针与整数相减:表示指针指向上个...

  • C初阶2:数组

    1. 初始化 1.1 整体初始化 试一下下面三段代码,分析输出。 代码一 代码二 代码三 结论: 数组未初始化,数...

  • C初阶6:函数

    1. 函数原型 1.1 函数原型是什么? 函数头以;结尾,构成函数原型。 1.2 函数原型怎么用? 函数原型通常放...

  • C初阶9:枚举

    1. 常量符号化 程序中的数字有时含义不明,被称为魔术数字。通常使用符号来表示。常用的方式有解决这种问题 cons...

  • 20181222课程记录

    1. C语言 1.1 C语言入门 代码云盘链接 提取码: vcrg 项目:2019年个税计算器 1.2 C语言初阶...

  • [C#-Windows]解决 C# 中使用联合体的问题(因为它在

    [C#-Windows]解决 C# 中使用联合体的问题(因为它在0偏移位置处包含一个对象字段...) 问题 开发的...

  • 《Glaya星际阿卡西招生》

    【初阶班】 周期28天,8堂课程 3333元/人 【中阶班】 初阶毕业,并达成晋级条件,方可参加 周期56天,12...

网友评论

      本文标题:C初阶8:联合体

      本文链接:https://www.haomeiwen.com/subject/jdhnpqtx.html