C语言中的共用体(union)和结构体(struct)是两种不同的数据类型,它们有一些区别,如下所示:
成员类型:结构体的成员可以是不同的数据类型,每个成员都占用独立的内存空间;而共用体的所有成员共享同一块内存空间,即共用体的不同成员会使用相同的内存空间。
内存占用:结构体的内存占用等于所有成员的内存占用之和,各成员的地址是连续的;而共用体的内存占用等于最大成员的内存占用,因为共用体只会使用其中一个成员。
访问成员:结构体的成员可以同时访问,可以通过成员名来访问;共用体的成员不能同时访问,只能访问当前使用的成员,访问方式也是通过成员名来访问。
对应关系:结构体的成员是相互独立的,存储不同的数据;共用体的成员是共享同一块内存空间的,存储的是不同的表示同一事物的数据。
总结来说,结构体用于存储不同类型的数据,每个成员占用独立的内存空间;共用体用于存储不同表示形式的同一事物的数据,所有成员共享同一块内存空间。