c++中的结构体和联合体有什么区别

来源:百度知道 编辑:UC知道 时间:2024/05/28 18:21:19
听说: 结构是所有的数据类型的内存的总和!
联合是申明的类型里面的最大的类型的内存
结构体懂了一点,但是联合体的内存好是不懂,请高手赐教,越详细越好,谢谢!

1. 区别
结构体是多个不同类型变量的组合,其占用的内存大小是所有变量大小的总和
联合体是多个不同类型变量的抽取,其占用内存的大小是联合体中最大的那个变量的大小

2. 解释
结构体中的多个变量同时存在,你可以给其中的每个变量分别赋值。任何一个变量被赋值不影响其他变量。你在需要使用时每个变量都可以同时被取出使用。
联合体中的多个变量同时只有一个存在。你只能给其中的一个变量赋值。你在给联合体的任何一个变量赋值的时候就覆盖了其他的变量,也就是说只有你刚赋值的这个变量存在,其他都被覆盖掉了

3. 用途
结构体和联合体都用于需要把一组变量联合考虑的场合。结构体变量清晰,便于使用,尤其是要表述一个对象的多个属性时方便有效。但是要占用比较大的内存
联合体同时只有一个变量存在,占用资源少,有助于提高编程效率,但是使用不如结构体这么方便和清晰。

请参考 http://zhidao.baidu.com/link?url=ypbVYByx_M2PNWkCi0zer2GMT3Jc7xP5KXz2U1dUwsGIJTSpxwIJsgdOcJtZ-QyZjkxGOe9pFqEkffrtMH-_4a

结构体是多个数据的集合,可以保存多个数据
而联合union只保存一个数据,但是可以按照不同类型来读取。
比如你的联合里面有一个int和一个float,你第一次写进int,然后第二次写进float,那么int就不可用了(或者说读出来已经不是你存的int值了),因为这个union所在的内存区域值已经是第二次写进的float了。

struct 占的字节数是每个变量占字节数的和,而union 占内部