电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

struct和union结构体和联合体的区别VIP专享VIP免费

struct和union结构体和联合体的区别_第1页
struct和union结构体和联合体的区别_第2页
struct和union结构体和联合体的区别_第3页
stru ct 和u nion 结构体和联合体的区别(转) 共用体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体-------自定义数据类型 --------------------------------------------------------------- 结构体变量所占内存长度是各成员占的内存长度的总和。 共同体变量所占内存长度是各最长的成员占的内存长度。 共同体每次只能存放哪个的一种!! 共同体变量中起作用的成员是尊后一次存放的成员, 在存入新的成员后原有的成员失去了作用! --------------------------------------------------------------- Stru ctu re 与 Union 主要有以下区别: 1. stru ct 和u nion 都是由多个不同的数据类型成员组成, 但在任何同一时刻, u nion 中只存放了一个被选中的成员, 而 stru ct 的所有成员都存在。在 stru ct 中,各成员都占有自己的内存空间,它们是同时存在的。一个stru ct 变量的总长度等于所有成员长度之 和。在 Union 中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union 变量的长度等于最长的成员的长度。 2. 对于u nion的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于stru ct的不同成员赋值是互不影响的。 举一个例子: 例: #include void main() { union{ /*定义一个联合*/ int i; struct{ /*在联合中定义一个结构*/ char first; char second; }half; }number; number.i=0x4241; /*联合成员赋值*/ printf("%c%c\n", number.half.first, number.half.second); number.half.first='a'; /*联合中结构成员赋值*/ number.half.second='b'; printf("%x\n", number.i); system("pause"); } 输出结果为: AB 6261 分析: union 的成员是共用内存的 union{ int i; struct{ char first; char second; }half; }number; number.i=0x4241; 在这里i 和 half 结构是共用内存 number.i=0x4241 给i 赋值后,内存中以二进制存储0100 0010 0100 0001 按顺序对应到结构中 halt.first=01000010 转换成10 进制就是66(字母A 的asc 码) halt.second=01000001 转换成10 进制是65 (字母B 的asc 码) 所以输出后就是 AB 下面同理了 ===============================================================...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部