联合体成员分工比例读取内存问题,请路过大佬们给个指点吧

联合体变量的各个成员所占内存单元的地址相同 请问这句话对吗_百度知道
联合体变量的各个成员所占内存单元的地址相同 请问这句话对吗
我有更好的答案
联合体变量的各个成员所占内存单元的 首 地址相同
采纳率:24%
内存相同,按最大的一个成员的内存分配
为您推荐:
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
u.c 是对应在第一个byte还是最后一个byte? 这个是undefined么?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
结构体(struct)
简单来说,结构体的数据成员在内存中的顺序是确定的,但是每个数据成员前后有可能插入一定数量的位(bit)来保证内存是对齐的。如下图所示:
每个方格右上角的数字即变量的起始地址偏移量。
From C99 §6.7.2.1:
12 Each non-bit-field member of a structure or union object is aligned in an implementation- defined manner appropriate to its type.
13 Within a structure object, the non-bit-field members and the units in which bit-fields reside have addresses that increase in the order in which they are declared. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning.
联合体(union)
简单来说,联合体中的所有成员的地址都是相同的。如下图所示:
三个变量的起始地址偏移量都是 0。
From the C99 standard §6.7.2.1:
14 The size of a union is sufficient to contain the largest of its members. The value of at most one of the members can be stored in a union object at any time. A pointer to a union object, suitably converted, points to each of its members (or if a member is a bit-field, then to the unit in which it resides), and vice versa.
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
对应最低字节。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我所知道的就是 i 和 c 是有相同的地址,这个在标准文档里面有讲到(n.2.1-16小节)然后找资料的时候有这么两句话,
C语言的数据结构都是从低地址向高地址扩展的
union的数据成员总是从低地址开始存放
至于对于第几个byte, u.c 和 ((char*)(&u))[0],肯定是同一个byte,那么就是对应第一个byte咯。。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
有个问题想请教您!!!!!!!!!您在日回答(这个就是传说中的 二进制文件 了.
文件大略 分为 文本的 和二进制的. 其实底下来说, 都是存的 字节码. 但是文本文件里的内容是符合某种编码的. 比如你在文本编辑器里, 用utf8打开, 看到里面没有乱码, 全是有意义的符号, 表示很开心.
但有很多文件, 不是用来在text editor/viewer里显示或者编辑的. 比如一副图片. 再或者我自定义了一种文件格式, 规定前2个字节是0, 后面放utf8 string.)
那该如何让其正常显示呢????
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
u.c 是对应在第一个byte还是最后一个byte?
首先CPU有大端与小端两类:大端即对数据的存储由高地址往第地址存储。如 int a = 0x;存储结构如下:地址 数据0 - 0x121 - 0x342 - 0x563 - 0x78
小端即对数据的存储由地地往高地址存储。如 int a = 0x;存储结构如下:地址 数据0 - 0x781 - 0x562 - 0x343 - 0x12
对于共用体的存储方式,还是要看CPU的类型union {
当CPU为小端的时候,char c的值存放在低地址。当CPU为大端的时候,char c的值存放在高地址。
可以通过下面的函数判断CPU类型,也可以知道实际机器存储union数据类型的方式啦:typedef enum __bool {false = 0,true =1}
bool is_little_Endian(elem a){
return a.c == 1 ? true:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
先看是大小端,再看是多少位的操作系统,单字节还是双字节,这些对结果都不一样的。。。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
u.c 是对应在第一个byte还是最后一个byte? 这个是undefined么?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
先看是大小端,再看是多少位的操作系统,单字节还是双字节,这些对结果都不一样的。。。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
结构体(struct)
简单来说,结构体的数据成员在内存中的顺序是确定的,但是每个数据成员前后有可能插入一定数量的位(bit)来保证内存是对齐的。如下图所示:
每个方格右上角的数字即变量的起始地址偏移量。
From C99 §6.7.2.1:
12 Each non-bit-field member of a structure or union object is aligned in an implementation- defined manner appropriate to its type.
13 Within a structure object, the non-bit-field members and the units in which bit-fields reside have addresses that increase in the order in which they are declared. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning.
联合体(union)
简单来说,联合体中的所有成员的地址都是相同的。如下图所示:
三个变量的起始地址偏移量都是 0。
From the C99 standard §6.7.2.1:
14 The size of a union is sufficient to contain the largest of its members. The value of at most one of the members can be stored in a union object at any time. A pointer to a union object, suitably converted, points to each of its members (or if a member is a bit-field, then to the unit in which it resides), and vice versa.
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
u.c 是对应在第一个byte还是最后一个byte? 这个是undefined么?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
对应最低字节。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
结构体(struct)
简单来说,结构体的数据成员在内存中的顺序是确定的,但是每个数据成员前后有可能插入一定数量的位(bit)来保证内存是对齐的。如下图所示:
每个方格右上角的数字即变量的起始地址偏移量。
From C99 §6.7.2.1:
12 Each non-bit-field member of a structure or union object is aligned in an implementation- defined manner appropriate to its type.
13 Within a structure object, the non-bit-field members and the units in which bit-fields reside have addresses that increase in the order in which they are declared. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning.
联合体(union)
简单来说,联合体中的所有成员的地址都是相同的。如下图所示:
三个变量的起始地址偏移量都是 0。
From the C99 standard §6.7.2.1:
14 The size of a union is sufficient to contain the largest of its members. The value of at most one of the members can be stored in a union object at any time. A pointer to a union object, suitably converted, points to each of its members (or if a member is a bit-field, then to the unit in which it resides), and vice versa.
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。向高手求助:关于联合体成员在内存中存放的问题_百度知道
向高手求助:关于联合体成员在内存中存放的问题
我有更好的答案
他们都是从同一地址&datarate开始,那8个字节的数据在内存中是不会变的,你输出的dData或者nData只是某种形式的输出,但是double的内存存储好像不同于int,char等,比如你在nData里面存了个,比如dData和nD/此时fp已经指向double型数据的起始位置有可能初始化有问题,再有就是关于联合体里面的内存存放FILE&#47
电脑硬件运维
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 联合体成员 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信