结构体与联合体的区别

联合体
用途:使几个不同类型的变量共占一段内存(相互覆盖)

结构体是一种构造数据类型
用途:把不同类型的数据组合成一个整体-------自定义数据类型

Struct与Union主要有以下区别:

1. struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。

2. 对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。

union myun
{
     struct { int x; int y; int z; }u;
     int k;
}a;
int main()
{
     a.u.x =4;
     a.u.y =5;
     a.u.z =6;
     a.k = 0;
     printf("%d %d %d\n",a.u.x,a.u.y,a.u.z);
     return 0;
}  

原文地址:https://www.cnblogs.com/inception6-lxc/p/9277250.html

时间: 2024-08-28 00:49:05

结构体与联合体的区别的相关文章

数组、结构体、联合体、枚举类型、类型转换

1.数组 int num[2] = { 1, 2 };//1×2,num[0]=1 int num[2][2] = { { 00, 01 }, { 10, 11 } };//2×2,num[1][1]=11 int num[2][2][2] = { {{000,001},{010,011}}, {{100,101},{110,111}} };//2个2×2数组,num[1][1][1]=111 2.结构体 #include <stdio.h> int main() { struct Famil

第五章:数组 结构体 和联合体

1.结构体 2.联合体 3.结构体和联合体的操作 4.非压缩数组 5.压缩数组 6.数组操作 7.数组foreache 循环 8.用于数组的特殊系统函数 结构体 1.结构体成员可以是任何数据类型 包括基本类型和用户自定义类型 2.结构体的声明 var/wire 都可以定义为结构体类型.当定义为结构体类型时,结构体中的成员都必须是四态类型,成员不能是wire类型. 3.结构体的初始化 用值列表方式初始化 '{} 4.结构体的赋值 5.压缩结构体 可以视为独立的变量,具体与向量类似的操作 6.非压缩

[转]C#中的结构体与类的区别

C#中的结构体与类的区别 经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字struct.在语法上其实类和结构有着很多相似的地方. 定义类的语法 1 class Person 2 { 3 private string name; 4 private int age; 5 6 public void SayHi() 7 { 8 Console.WriteL

C#结构体和类的区别

结构体和类的区别 1. 值类型与引用类型 结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,通过使用结构可以创建更多的值类型 类是引用类型:引用类型在堆上分配地址 堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象.所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑 因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用 注:   a.虽然结构与类的类型不一

结构体和联合体

定义: 结构体是将不同的数据类型组成一个新的数据类型(自定义数据类型) 联合是几个不同的数据类型共用同一个内存段(相互覆盖) 所占内存大小: 结构体变量所占内存长度是各成员占的内存长度的总和. 共同体所占内存大小主要看变量中起作用的成员是最后一次存放的成员,在存入新的成员后原有的成员失去了作用! Struct与Union主要有以下区别: 1. struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在.在

C++中结构体和类的区别

在C++中,结构体是一种特殊形态的类. 结构体和类的唯一区别就是:  结构体和类具有不同的默认访问控制属性. 类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private) 结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有类型(public) C++中,不使用结构体丝毫不会影响程序的表达能力.C++之所以要引入结构体,是为了保持和C程序的兼容性. 但有时仍会在C++中使用结构体,是因为,可以使用结构体将不同类型数据组成整体,方便于保存数据.(若用类来保存,因类中成

结构体,联合体,内存分配

#include<stdio.h> struct a{ char x[6]; int y; char z[6]; }; struct b{ int y; char x[6]; char z[6]; }; union c{ char x[6]; int y; char z[6]; }; int main() { printf("%d,%d,%d\n",sizeof(struct a),sizeof(struct b),sizeof(union c)); return 0; }

C#中的结构体与类的区别

(一)   语法定义上的区别,定义类使用关键字class 定义结构使用关键字struct (二)  在结构体中可以声明字段,但是声明字段的时候是不能给初始值的.

C语言:结构体和联合体(共用体)

结构体:struct 1.结构体变量的首地址能够被其最宽基本类型成员的大小所整除. 2.结构体每个成员相对于结构体首地址的偏移量(offset)都是成员的整数倍. 3.结构体的总大小为结构体最宽基本类型成员大小的整数倍. cpu的字长: 32位的cpu或64位的cpu 32位或64位指的是cpu的字长 字长实际上指得是cpu在访问内存时,一次可以读取的长度. 内存对齐(可以设置,一般是2的倍数,虽然浪费了空间,但是方便了cpu更好更快的取出数据): char  4个字节 int    4个字节