社区
C++ 语言
帖子详情
union 的问题
BJUTmark
2008-05-10 10:41:17
在介绍联合体的时候,课本上给出的说法是“有时候需要使几个不同类型的变量共用同一组内存单元”
我不明白,多个变量都存在同一块内存中,那么不会覆盖吗?
例如
union animal
{
int age;
char c;
float weight;
}
这个联合体在内存中占的字节数是 4,但是4个字节你要么存放 age 要么存放 weight 或者是存放c。他们3个共同使用这4个字节的内存是怎么回事。
...全文
73
7
打赏
收藏
union 的问题
在介绍联合体的时候,课本上给出的说法是“有时候需要使几个不同类型的变量共用同一组内存单元” 我不明白,多个变量都存在同一块内存中,那么不会覆盖吗? 例如 union animal { int age; char c; float weight; } 这个联合体在内存中占的字节数是 4,但是4个字节你要么存放 age 要么存放 weight 或者是存放c。他们3个共同使用这4个字节的内存是怎么回事。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Treazy
2008-05-11
打赏
举报
回复
空间是固定的
东西可以任意
那拿出来的是什么东西取决于这个东西的类型
caesar_ca
2008-05-11
打赏
举报
回复
可以把union看作是对同一段内存的不同类型解释。例如
union mem {
int integar;
float floating;
char character;
} mem4Byte;
mem4Byte.integar 把这4字节内存当作int值来解释, mem4Byte.floating把这4字节内存当作浮点数来解释。mem4Byte.character把第一个字节解释为字符,忽略余下的3个字节。
C-style的转换是同样的意义,把内存解释为指定类型。union是语法糖,让代码更清晰。
给你一个实际使用union的例子,用来定义color。
union {
struct {
unsigned char r, g, b, a;
} rgba;
unsigned int c32;
} mRgba;
ltaoscu
2008-05-11
打赏
举报
回复
union 所占空间大小为其里面最大数据元素所占字节大小,这些元素共享这段内存空间,不同时候表现为不同类型,关键是看你怎么用。
BJUTmark
2008-05-10
打赏
举报
回复
哦 明白了,谢谢了。今天看了好多你回的问题。
matrixdwy
2008-05-10
打赏
举报
回复
[Quote=引用 1 楼 baihacker 的回复:]
意思是在一个盒子里可以放香蕉也可以放苹果还有梨子
[/Quote]
当你想拿香蕉的时候,有可能拿出来的是苹果或梨子
当你想拿苹果的时候,有可能拿出来的是香蕉和梨子
当你想拿梨子的时候,有可能拿出来的是香蕉和苹果
当然,你可能想要拿到什么就能拿到什么,关键看你怎么拿
Jncryang
2008-05-10
打赏
举报
回复
但是这个盒子放东西的时候,只能放其中的一个!
baihacker
2008-05-10
打赏
举报
回复
意思是在一个盒子里可以放香蕉也可以放苹果还有梨子
记录使用
union
的一些
问题
文章目录前言一、
union
和
union
all的区别?二、
union
/
union
all 使用order by失败1.拼接两个结果集使用排序失效2.Incorrect usage of
UNION
and ORDER BY总结 前言 最近有使用到把几张数据库结果集拼起来,用到了...
hive的
union
问题
hive不支持顶层
union
,只能将
union
封装在子查询中;且必须为
union
的查询输出定义别名
SQL中
union
问题
UNION
指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看,
UNION
跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。
UNION
的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。...
sql注入时
union
出错(Illegal mix of collations for operation
UNION
)
当
union
连接information_schema时,就会出现Illegal mix of collations for operation ...以上就是出现
union
问题
的解决方案。 注:
UNION
内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时
UNION
大小
问题
联合体(
union
) 当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(
union
); 1)联合体是一个结构; 2)它的所有成员相对于基地址的偏移量都为0; 3)此结构空间要大到足够容纳最"宽"的成员; 4)其对齐...
C++ 语言
64,649
社区成员
250,477
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章