sizeof问题

南瓜饼 2013-12-24 02:44:38
union _flag
{
struct _left
{
BYTE bP1; // 8
BYTE bP2; // 9
BYTE bFlag; // a
BYTE dReseved0; // b
}left;
ULONG ads;
}flag;

sizeof结果是4,ULONG+4个BYTE应该是8才对呀
...全文
304 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenkang_apple123 2013-12-25
  • 打赏
  • 举报
回复
union 你用共用体的话,它只会获取最大字节数,你的字节数是四字节;所以sizeof( union(xx) );就是4字节,你可以在long 下面在加以个long 在sizeof 就是8字节‘
Sharing_Li 2013-12-25
  • 打赏
  • 举报
回复
注意union的用法,和struct不一样。
max_min_ 2013-12-25
  • 打赏
  • 举报
回复
引用 4 楼 wenwei19861106 的回复:
引用 1 楼 akirya 的回复:
前面 union 不是struct
有什么区别嘛 能说详细点嘛
union的实际长度 只是取它里面的成员最长的一个!每一个成员的首地址都是一样的! struct长度是所有成员的长度和,每一个成员的首地址都不同!
陆小路 2013-12-25
  • 打赏
  • 举报
回复
楼主一看就是搞IT的
vipcxj 2013-12-25
  • 打赏
  • 举报
回复
LZ分好多阿,100分就问个联合是什么的问题。
wanren13 2013-12-24
  • 打赏
  • 举报
回复
学习了
帅得不敢出门 2013-12-24
  • 打赏
  • 举报
回复
struct是二者通吃。
帅得不敢出门 2013-12-24
  • 打赏
  • 举报
回复
union 是要在原配与三房间选择,肯定取胸大的呀。
陆小路 2013-12-24
  • 打赏
  • 举报
回复
还真不知道该怎么解释--虽然好想回答本来就是这样的
lin5161678 2013-12-24
  • 打赏
  • 举报
回复
区别自行百度 如果 完全一样 为什么 要分别搞一个 union 和一个 struct
版主大哥 2013-12-24
  • 打赏
  • 举报
回复
1. 共用体声明和共用体变量定义
 
共用体(参考“共用体”百科词条)是一种特殊形式的变量,使用关键字union来定义
 
共用体(有些人也叫"联合")声明和共用体变量定义与结构体十分相似。其形式为:
 
union 共用体名{
 
数据类型 成员名;
 
数据类型 成员名;
 
...
 
} 变量名;
 
共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。


2. 共用体和结构体的区别
 
共用体和结构体有下列区别:
 
1. 共用体和结构体都是由多个不同的数据类型成员组成, 但在任何同一时刻, 共用体只存放了一个被选中的成员, 而结构体的所有成员都存在。
 
2. 对于共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构体的不同成员赋值是互不影响的。


starytx 2013-12-24
  • 打赏
  • 举报
回复
看书上怎么描述结构体和联合体的
大奶兔白糖 2013-12-24
  • 打赏
  • 举报
回复
楼主可以自己试验一下,分别定义相同内容的union和struct,然后你把两个结构内所有成员变量的地址都打印出来,你就知道差别了
南瓜饼 2013-12-24
  • 打赏
  • 举报
回复
引用 1 楼 akirya 的回复:
前面 union 不是struct
有什么区别嘛 能说详细点嘛
hui211314ddhui 2013-12-24
  • 打赏
  • 举报
回复
楼主的相貌和发型和太像了!!! union 构建的类型 内部的各数据类型共用内存,类型大小是其中最大的!
大奶兔白糖 2013-12-24
  • 打赏
  • 举报
回复
联合体,楼主要搞哪样啊?联合体的长度依赖于其结构内部最长的数据类型的长度啊。。
  • 打赏
  • 举报
回复
前面 union 不是struct

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧