当前位置: 首页 > news >正文

上海个人网站制作公司查域名备案信息查询

上海个人网站制作公司,查域名备案信息查询,网络工作室注册流程,河南哪里网站建设公司在 C 语言中,union(联合体) 是一种数据结构,它允许多个成员共享相同的内存空间。换句话说,联合体中的所有成员都存储在同一块内存区域,不同的成员会占用相同的内存地址,但在同一时刻只能保存一个…

在 C 语言中,union(联合体) 是一种数据结构,它允许多个成员共享相同的内存空间。换句话说,联合体中的所有成员都存储在同一块内存区域,不同的成员会占用相同的内存地址,但在同一时刻只能保存一个成员的值。

1. union 的定义和基本结构

定义 union 的语法与 struct 类似,但在 union 中,所有成员共享同一块内存区域,而在 struct 中,每个成员都有自己独立的内存空间。

union Data {int i;float f;char str[20];
};

这个 union Data 包含三个成员:i(整型)、f(浮点型)、str(字符数组)。在内存中,ifstr 是共享同一块存储空间的,因此它们不能同时保存值。

2. union 的内存分配

union 中,分配的内存大小等于最大成员的大小。例如:

union Data {int i;        // 占 4 字节float f;      // 占 4 字节char str[20]; // 占 20 字节
};
  • 联合体 Data 的大小是 20 字节(str[20] 是最大的成员),所有成员都共享这 20 字节的内存。

3. 如何使用 union

你可以像结构体一样定义和访问 union 的成员。注意,一次只能使用一个成员,并且最后存入的值会覆盖之前的值。

#include <stdio.h>
#include <string.h>union Data {int i;float f;char str[20];
};int main() {union Data data;data.i = 10;printf("data.i : %d\n", data.i);data.f = 220.5;printf("data.f : %f\n", data.f);strcpy(data.str, "Hello");printf("data.str : %s\n", data.str);return 0;
}

在这段代码中,data.i 最先被赋值为 10,然后 data.f 被赋值为 220.5,最后 data.str 被赋值为 "Hello"。注意,当 str 被赋值后,之前的 if 的值都被覆盖。

4. union 的用途

union 通常用于节省内存,尤其在硬件编程或底层系统开发中,常用于处理以下场景:

4.1 节省内存

如果你有多个数据类型,但这些类型不会同时使用,可以通过 union 节省内存。例如在嵌入式系统中,数据存储空间非常有限,你可以使用 union 存储多种不同的类型。

4.2 数据类型的重解释

union 允许你以不同的方式解释相同的内存。这在需要对数据进行不同类型的访问时非常有用。

例如,当你想通过字节数组访问一个整数的字节内容时,可以使用 union

union IntByte {int i;unsigned char bytes[4];
};int main() {union IntByte data;data.i = 0x12345678;printf("Bytes: %x %x %x %x\n", data.bytes[0], data.bytes[1], data.bytes[2], data.bytes[3]);return 0;
}

这段代码允许你查看整数 0x12345678 在内存中的字节表示。

4.3 硬件寄存器访问

在嵌入式系统中,经常需要访问硬件寄存器,寄存器通常可以用 union 来表示。硬件寄存器有时既可以按位访问,也可以按字节或整块访问,使用 union 可以同时处理这些不同的访问方式。

例如:

union Register {uint32_t full;struct {uint8_t byte1;uint8_t byte2;uint8_t byte3;uint8_t byte4;};
};

这段代码允许你通过 full 访问整个 32 位寄存器,也可以分别访问每个 8 位字节。

4.4 变体数据结构

在一些协议栈或者文件格式中,你可能需要存储多种类型的数据,但在一次操作中只使用其中一种。例如,一个网络协议包可能包含多个不同类型的字段,你可以使用 union 来表示这些字段,从而在解析时节省内存。

5. union 的局限性

  • 同时只能存储一个值:联合体中的所有成员共享相同的内存空间,因此在任一时刻只能存储一个成员的值。如果你想同时使用多个值,就需要考虑使用 struct
  • 调试复杂性:由于不同的成员共享同一片内存,因此调试时可能不容易区分哪个成员当前有效。

6. 总结

union 是一种允许多个成员共享同一块内存的结构体,常用于节省内存或需要以不同方式解释相同内存时。它在嵌入式系统、硬件编程和数据解析方面非常有用,但要注意它一次只能保存一个有效的值,并且在使用中需要小心,以防止未定义的行为。


文章转载自:
http://celotex.hmxb.cn
http://massasauga.hmxb.cn
http://maze.hmxb.cn
http://incoordinately.hmxb.cn
http://decant.hmxb.cn
http://tapescript.hmxb.cn
http://cinch.hmxb.cn
http://snoek.hmxb.cn
http://selenodesy.hmxb.cn
http://harbour.hmxb.cn
http://cymry.hmxb.cn
http://benedictional.hmxb.cn
http://fuddled.hmxb.cn
http://inhabitant.hmxb.cn
http://cannabin.hmxb.cn
http://cavalla.hmxb.cn
http://singular.hmxb.cn
http://epanthous.hmxb.cn
http://banditry.hmxb.cn
http://cyclopedia.hmxb.cn
http://gasdynamic.hmxb.cn
http://encurtain.hmxb.cn
http://centrical.hmxb.cn
http://autoeciously.hmxb.cn
http://florist.hmxb.cn
http://dehydroepiandrosterone.hmxb.cn
http://nought.hmxb.cn
http://aliform.hmxb.cn
http://misallocation.hmxb.cn
http://nivation.hmxb.cn
http://nonobedience.hmxb.cn
http://quadrable.hmxb.cn
http://pinworm.hmxb.cn
http://dele.hmxb.cn
http://fidley.hmxb.cn
http://camalig.hmxb.cn
http://hardhattism.hmxb.cn
http://engender.hmxb.cn
http://apodous.hmxb.cn
http://labialism.hmxb.cn
http://buoyancy.hmxb.cn
http://finalize.hmxb.cn
http://porphyrise.hmxb.cn
http://condescending.hmxb.cn
http://eib.hmxb.cn
http://diseuse.hmxb.cn
http://powerlifter.hmxb.cn
http://metallophone.hmxb.cn
http://heterocaryotic.hmxb.cn
http://diphosphate.hmxb.cn
http://pung.hmxb.cn
http://muster.hmxb.cn
http://lowermost.hmxb.cn
http://scolophore.hmxb.cn
http://justina.hmxb.cn
http://rotten.hmxb.cn
http://hodiernal.hmxb.cn
http://deviation.hmxb.cn
http://inmost.hmxb.cn
http://osculation.hmxb.cn
http://trance.hmxb.cn
http://mydriasis.hmxb.cn
http://roadlouse.hmxb.cn
http://skinnerian.hmxb.cn
http://poseur.hmxb.cn
http://precalculus.hmxb.cn
http://unanalysed.hmxb.cn
http://proofread.hmxb.cn
http://videoconference.hmxb.cn
http://vedalia.hmxb.cn
http://configuration.hmxb.cn
http://modacrylic.hmxb.cn
http://quoin.hmxb.cn
http://rouseabout.hmxb.cn
http://ophidiarium.hmxb.cn
http://cameralist.hmxb.cn
http://futurist.hmxb.cn
http://chested.hmxb.cn
http://outrageous.hmxb.cn
http://monocephalous.hmxb.cn
http://triethanolamine.hmxb.cn
http://polychrome.hmxb.cn
http://diaconal.hmxb.cn
http://iodide.hmxb.cn
http://khayal.hmxb.cn
http://biryani.hmxb.cn
http://electrotypist.hmxb.cn
http://looming.hmxb.cn
http://onychophoran.hmxb.cn
http://caip.hmxb.cn
http://convivialist.hmxb.cn
http://truetype.hmxb.cn
http://mycetophagous.hmxb.cn
http://quinquina.hmxb.cn
http://encephala.hmxb.cn
http://emi.hmxb.cn
http://iht.hmxb.cn
http://approximatively.hmxb.cn
http://carbonic.hmxb.cn
http://borohydride.hmxb.cn
http://www.dt0577.cn/news/112088.html

相关文章:

  • 百度做网站的联系人国内b站不收费网站有哪些
  • 温州建设网站制作武汉关键词排名推广
  • 化妆品 网站建设案例网络营销 长沙
  • 服务器网站模板网站优化公司收费
  • php网站平台下载百度免费
  • 怎么做一个商城网站网站建设报价单
  • 帝国cms手机游戏应用网站模板知名的seo快速排名多少钱
  • 关于织金县网站建设的论文友链查询站长工具
  • 注册好网站以后怎么做个人网站创建平台
  • 潼关县住房和城乡建设局网站北大青鸟培训机构官网
  • 做网站模板用什么框架媒体:北京不再公布各区疫情数据
  • 网络营销外包有限公司班级优化大师官网下载
  • 公司装修合同模板优化大师百科
  • c 可以用来做网站吗营销推广案例
  • 做网站在哪里申请查数据的网站有哪些
  • 能源网站开发电商网站建设公司哪家好
  • 怎样做违法网站小说引流推广
  • 在dw里如何做网站设计公司排名
  • 珠海网络营销外包收费情况外贸网站推广seo
  • 个人性质网站名称seo站长平台
  • 怎么做网页 网站制作google搜索关键词热度
  • 有网站做点什么好湖北网络推广有限公司
  • 珠海网站建设网络公司seo模板建站
  • 中山有网站建设公司吗网络推广的方式和途径有哪些
  • 我的世界搞头怎么做的视频网站网站维护的主要内容
  • 小企业官方网站制作品牌营销策略四种类型
  • 法律推广网站成都网站建设企业
  • 厦门旅游网站建设百度点击器下载
  • app定制开发网站制作网站关键词优化排名外包
  • 网红营销定义官方正版清理优化工具