首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c语言之共用体union、枚举、大小端模式

一、共用体union: 1、什么是共用体union?...the c is 0x61feac the b is 0x61feac 说明: 通过上面的代码示例,读者可以发现这个共用体的大小,并不是像我们之前结构体那样是把每个成员所占内存大小加起来...a和b都是60,它是访问内存占用大小最大的那个成员的数值,因为那个'B'的acii码值是是66;通过示例,我们也发现共用体访问其成员方式跟结构体是一样的(上面也有说到过)。...3、代码实战来判断大小端模式: #include // 共用体中很重要的一点:a和b都是从u1的低地址开始的。...(2)移位: 结论:移位的方式也不能测试机器大小端。 理论分析:原因和&运算符不能测试一样,因为C语言对运算符的级别是高于二进制层次的。

2K20

c语言之共用体union、枚举、大小端模式

一、共用体union: 1、什么是共用体union?...the c is 0x61feac the b is 0x61feac 说明: 通过上面的代码示例,读者可以发现这个共用体的大小,并不是像我们之前结构体那样是把每个成员所占内存大小加起来...a和b都是60,它是访问内存占用大小最大的那个成员的数值,因为那个'B'的acii码值是是66;通过示例,我们也发现共用体访问其成员方式跟结构体是一样的(上面也有说到过)。...3、代码实战来判断大小端模式: #include // 共用体中很重要的一点:a和b都是从u1的低地址开始的。...(2)移位: 结论:移位的方式也不能测试机器大小端。 理论分析:原因和&运算符不能测试一样,因为C语言对运算符的级别是高于二进制层次的。

80040
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言-枚举、共用体

    共用体 前面章节学习了结构体,结构体里可以按顺序存放相同或者不同的数据类型,每个成员都有它对应的存储空间。...而共用体和结构体一样也可以按顺序存放相同或者不同数据类型,但是与结构体的区别是,共用体所有成员共用一个存储空间,存储空间由成员中存储空间最大的来决定。...共用体定义示例: union app { int a; int b; char c; }; **共用体:**也称为联合体,采用内存覆盖技术,每个成员共用一个内存空间,开空间是以最大的成员开空间...匿名方式定义,只能在定义共用体的时候就定义变量 union { int a; int b; char c; }a1,a2,a3; //定义3个变量 union app2 {...枚举 C语言的枚举可以给一串有序的数字集合定义名字,特别是数量较多的整数需要定义名字时,比#define更加方便。

    82620

    C语言 | 共用体概述

    在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...什么是C语言共用体类型 一般形式 union 共用体名 { 成员表列 }变量表列; 结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。...而共用体变量所占的内存长度等于最长的成员的长度。 C语言引用共用体变量的方式 只有先定义了共用体变量才能引用它,但应注意,不能引用共用体变量,而只能引用共用体变量中的成员。...C语言共用体类型数据的特点 同一个内存段可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一个成员,而不是同时存放几个。 可以对共用体变量初始化,但初始化表中只能有一个常量。...不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。 C语言规定不能把共用体变量作函数参数,但可以使用指向共用体变量的指针作函数参数。

    76330

    C语言 | 共用体概述

    什么是C语言共用体类型 一般形式 union 共用体名 {   成员表列 }变量表列; 结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。...而共用体变量所占的内存长度等于最长的成员的长度。 C语言引用共用体变量的方式 只有先定义了共用体变量才能引用它,但应注意,不能引用共用体变量,而只能引用共用体变量中的成员。...C语言共用体类型数据的特点 同一个内存段可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一个成员,而不是同时存放几个。 可以对共用体变量初始化,但初始化表中只能有一个常量。...不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。 C语言规定不能把共用体变量作函数参数,但可以使用指向共用体变量的指针作函数参数。...100道C语言源码案例请去公众号:C语言入门到精通

    97000

    结构体和共用体(C语言)

    1、结构体和共用体的定义 结构体关键字为struct,共用体关键字为union /*** 定义一个person的结构体,要';'结束*/struct person{ char name[20...//年龄 float height; //身高 float weight; //体重 }; /*** 定义一个people共用体...*/union people{ char name[20]; int age;}; 2、结构体和共用体的声明 结构体和共用体的三种声明是一致的: void mian(){ //结构体的声明...person p){ printf("姓名:%s\n", name); printf("年龄:%d", age);} 7、结构体和共用体的区别 结构体在创建时,按照结构体成员变量占的内存分配...而共用体则按照共用体中,所占内存最大的变量分配内存。所以,共用体变量只能单个使用,而结构体可以所有变量一起使用。

    1.8K40

    9.5 C语言共用体类型

    01什么是共用体类型 1、一般形式 union 共用体名 { 成员表列 }变量表列; 2、结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。...而共用体变量所占的内存长度等于最长的成员的长度。 02 引用共用体变量的方式 1、只有先定义了共用体变量才能引用它,但应注意,不能引用共用体变量,而只能引用共用体变量中的成员。...3、共用体变量中起作用的成员是最后一次被赋值的成员,在对共用体变量中的一个成员赋值后,原有变量存储单元中的值就取代。 4、共用体变量的地址和它的各成员的地址都是同一地址。...5、不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。 6、以前的C规定不能把共用体变量作函数参数,但可以使用指向共用体变量的指针作函数参数。...7、共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。 C语言 | 冒泡排序比较大小 更多案例可以go公众号:C语言入门到精通

    7532725

    【C语言】结构体与共用体深入解析

    在C语言中,结构体(struct)和共用体(union)都是用来存储不同类型数据的复合数据类型,它们在程序设计中具有重要的作用。1....结构体的定义与使用1.1 结构体的基本概念结构体(struct)是C语言中的一种用户自定义的数据类型,它允许用户将不同类型的数据组合成一个单一的复合数据类型。...内存对齐的原理在C语言中,每个数据类型都有自己的“对齐要求”。对齐要求是指某个数据类型的变量在内存中应存储在某个特定的地址上,这个地址通常是该数据类型大小的倍数。...C语言中非常强大的数据结构。...通过本篇文章的学习,希望你能够全面理解结构体与共用体的定义、使用方式及其在指针方面的应用,从而更好地应对C语言编程中的复杂问题。

    12210

    C语言知识总结——宏,枚举,结构体,共用体

    这也是一个大小端模式的问题 每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。...大小端: 如:int 11 22 33 44 在存储的时候 大端:11 22 33 44 0 1 2 3 低地址----> 高地址 小端:44 33 22 11 0 1 2...3 低地址----> 高地址 大小端的差异在于存放顺序不同 常见的操作系统是小端,通讯协议是大端。...这种几个不同的变量共同占用一段内存的结构,在C语言中 以关键字union声明的一种数据结构,这种被称作“共用体”类型结构,也叫联合体。 “联合”与“结构”有一些相似之处。但两者有本质上的不同。...共用体的访问:共用体访问成员的值时一般使用.运算符,指针时用->运算符(和结构体是一样的) typedef union _node { int a; double b; char c; union

    2.4K40

    C语言共用体与枚举类型-学习三十

    为共用体变量分配空间的大小是以所有成员中占用空间字节数最多的成员为标准。 共用体类型的声明及变量的定义 共用体类型的声明与结构体的声明完全相同,只是关键字为union。...数据类型 成员名n; }; 例如: union data { int i; char c; float f; }; 共用体变量的定义方式与结构体变量的定义方式相似..., d2; 3.直接定义共用体类型的变量,不给出共用体名 union { int i; char c; float f;....c 或 pd ->c、d1.f 或 pd ->f 同类型的共用体变量之间可以互相赋值。...("sd.i: %d,sd.c: %c,sd.f: %f\n", sd.i, sd.c, sd.f); } image.png 从上面的运行结果可看出 对共用体变量成员的赋值,保存的是最后的赋值前面对其他成员的赋值均被覆盖

    54610

    9.9 C++共用体

    C++共用体概述 在C++中,会需要使几种不同类型的变量存放到同一段内存单元中,比如,将一个整型变量、一个字符型变量、一个双精度型变量放在同一个地址开始的内存单元中,这3个变量在内存中占的字节数不同,但都从同一地址开始存放...声明共用体类型的一般形式为  union 共用体类型名 {成员表列 }; 定义共用体变量的一般形式为  共用体类型名 共用体变量名; C++允许在声明共用体类型的同时定义共用体变量,也可没有共用体类型名而直接定义共用体变量...C++共用体变量的访问 C++不能引用共用体变量,而只能引用共用体变量中的成员。...C++共用体类型的特点 共用体变量的地址和它的各成员的地址都是同 一地址。 不能对共用体变量名赋值。 不能企图引用变量 名来得到一个值。 不能在定义共用体变量时对它初始化。...不能用共用体变量名作为函数参数。  C++能够访问的是共用体变量中最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去作用。  9.9 C++共用体 更多案例可以go公众号:C语言入门到精通

    53988

    C语言入门系列之10.结构体和共用体

    ——链表 1.动态存储分配 我们知道,C语言中不允许动态数组类型,数组的长度是预先定义好的,在整个程序中固定不变。..., b, c; 或者: union data{ int i; char ch; flaot f; }; union data a, b, c; 共用体和结构体的比较: 结构体变量所占内存长度是各成员占的内存长度之和...例如,前面定义的共用体变量a、b、c各占4个字节(因为一个实/整型变量占4个字节),而不是各占4+1+4=9个字节。...例如,前面定义了a、b、c为共用体变量: a.i // 引用共用体变量中的整型变量i a.ch // 引用共用体变量中的字符变量ch a.f // 引用共用体变量中的实型变量f 3.共用体类型数据的特点...为此,C语言提供了枚举类型。

    1.2K20

    江哥带你玩转C语言 | 14 - 结构体-枚举-共用体

    显然这组数据不能用数组来存放, 为了解决这个问题,C语言中给出了另一种构造数据类型——“结构(structure)”或叫“结构体”。...---- 定义结构体类型 在使用结构体之前必须先定义结构体类型, 因为C语言不知道你的结构体中需要存储哪些类型数据, 我们必须通过定义结构体类型来告诉C语言, 我们的结构体中需要存储哪些类型的数据 格式...和结构体不同的是, 结构体的每个成员都是占用一块独立的存储空间, 而共用体所有的成员都占用同一块存储空间 和结构体一样, 共用体在使用之前必须先定义共用体类型, 再定义共用体变量 定义共用体类型格式:...C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值, 被说明为该“枚举”类型的变量取值不能超过定义的范围。...Autumn, Winter } s; s = Spring; // 等价于 s = 0; s = 3; // 等价于 s = winter; printf("%d", s); 枚举使用的注意 C语言编译器会将枚举元素

    77700

    一万六千字详解C语言struct 结构体与 union 共用体

    在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。结构体可以存储不同的数据类型,将他们互相联系起来。...这也是一个大小端模式的问题 每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。...2 3 低地址----> 高地址 大小端的差异在于存放顺序不同 常见的操作系统是小端,通讯协议是大端。...(联合体) 在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。...这种几个不同的变量共同占用一段内存的结构,在C语言中 以关键字union声明的一种数据结构,这种被称作“共用体”类型结构,也叫联合体。 “联合”与“结构”有一些相似之处。

    1.9K20

    c语言struct结构体大小计算

    直入主题,要判断一个结构体所占的空间大小,大体来说分三步走: 1.先确定实际对齐单位,其由以下三个因素决定     1> CPU周期     WIN  vs  qt  默认8字节对齐     Linux...    上面三者取最小的,就是实际对齐单位(这里的“实际对齐单位”是我为了方便区分随便取的概念) 2.除结构体的第一个成员外,其他所有的成员的地址相对于结构体地址(即它首个成员的地址)的偏移量必须为实际对齐单位或自身大小的整数倍...(取两者中小的那个) 3.结构体的整体大小必须为实际对齐单位的整数倍。...char a放在结构体的起始地址; short b占2个字节,2小于实际对齐字节8,故b的起始地址相对于a的起始地址的偏移量须为2的整数倍个字节; int c占4个字节,4小于实际对齐字节8,故c 起始地址相对于...+2(b)+4(c)+8(d)+13(arr)+5(浪费空间)=32字节 另外结构体嵌套结构体的字节对齐和上面原理一样,唯一要注意的是子结构体的起始地址与母结构体的起地址之间的距离必须是子结构体最大成员或者实际对齐单位

    1.5K41
    领券