结构体和共用体的区别

结构体(struct)和共用体(union)是C语言中两种不同的数据类型,它们的区别如下:

1、存储方式

        结构体:结构体中的每个成员都有自己独立的存储空间,成员的存储顺序按照声明的顺序依次排列。

        共用体:共用体的所有成员共享同一块存储空间,同一时刻只能存储其中一个成员的值。

//结构体
struct Person {
	char name[50];
	int age;
	float height;
};

//共用体
union Data {
	int intValue;
	float floatValue;
	char charValue;
};

2、内存占用

        结构体:内存占用为其所有成员占用内存之和。

printf("%d", sizeof(struct Person));
//Person结构体所占内存为60

        共用体:内存占用为其最大成员所占用的内存大小。

printf("%d", sizeof(union Data));
//Data共用体所占内存为4

3、访问方式

        结构体:可以同时访问结构体的所有成员。

struct Person person1;
strcpy_s(person1.name, 50,"张三");
person1.age = 25;
person1.height = 178.5;
printf("姓名:%s\n年龄:%d\n身高:%f", person1.name,person1.age,person1.height);
//运行结果:
//姓名:张三
//年龄:25
//身高:178.500000

        共用体:在同一时刻只能访问其中一个成员。

union Data data;
data.intValue = 10;
printf("%d", data.intValue);
//结果:10

/*错误运行代码:
union Data data;
data.intValue = 10;
data.floatValue = 3.14;
printf("%d\n%f", data.intValue,data.floatValue);

结果:
1078523331
3.140000
*/

4、用途

        结构体:常用于将不同类型但相关的数据结合在一起,以形成一个逻辑上的整体。

        共用体:通常用于节省内存或者在不同时刻需要使用不同类型的同一存储空间的情况。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值