枚举 联合体变量所占内存空间大小------数据类型,指固定内存大小的别名,如int类型为4个字节内存。变量,一段连续存储空间的别名。这段连续存储空间的大小,即变量的大小,由定义该变量的数据类型决定

106 篇文章 8 订阅
本文详细探讨了数据类型在内存占用上的规则,包括固定内存大小的别名、变量的内存分配以及枚举、结构体和联合体的内存计算方法。枚举变量的大小通常等同于int类型,而联合体的大小则是其最大成员的大小,考虑到内存对齐。通过对示例代码的分析,解释了如何计算联合体的大小,并提供了实际的输出结果。
摘要由CSDN通过智能技术生成

下面两句话–屁精极了

数据类型,指固定内存大小的别名,如int类型为4个字节内存。

变量,一段连续存储空间的别名。这段连续存储空间的大小,即变量的大小,由定义该变量的数据类型决定,即该数据类型代表的固定内存大小。数据类型,是变量的模板。

原文链接:https://blog.csdn.net/bulebin/article/details/54388735

枚举变量

既然,struct结构体变量大小等于结构体中的各个成员变量所占内存大小总和,union共用体变量大小等于共用体结构中占用内存最大的成员的内存大小。

那么enum枚举变量所占内存大小怎么计算?

应用到枚举上:

枚举类型,指一个被命名的整型常数的集合。即枚举类型,本质上是一组常数的集合体,只是这些常数有各自的命名。枚举类型,是一种用户自定义数据类型。

枚举变量,由枚举类型定义的变量。枚举变量的大小,即枚举类型所占内存的大小。由于枚举变量的赋值,一次只能存放枚举结构中的某个常数。所以
枚举变量的大小,实质是常数所占内存空间的大小(常数为int类型,当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节),枚举类型所占内存大小也是这样。

结构体里面的成员是变量,而枚举里面的成员是常量啊!(这是我个人的理解)

因为,枚举变量的取值为花括号内的任意一个值(有且只能有其中一个值),而这个值是int型的,在X86系统中,int型的数据占内存4个字节。所以sizeof© = 4,也就是枚举变量的值为4。

关于联合类型的定义

联合也是一种特殊的自定义类型,这种类型定义的变量也包含一系列的成员,而他们的特征就是这些成员会共用同一块空间(所以联合也叫共用体),

联合体的成员是共同运用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(联合体至少得有能力保存最大的那个成员)

关于联合体大小的计算
1.联合体的大小至少是最大成员的大小.
2.当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍.

#include <stdio.h>
#include <stdlib.h>
//关于联合体大小的计算
union Un1{
	char c[5];
	int i;
};
union Un2{
	short c[7];
	int i;
};
int main(){
	printf("%d\n", sizeof(union Un1));
	printf("%d\n", sizeof(union Un2));
	system("pause");
	return 0;
}

在这里插入图片描述

首先它们的最大对齐数都是4,Un1的最大成员大小为5,不是4的整数倍,所以对齐到8字节.Un2的最大成员大小为14(short类型为2字节),不是4的整数倍,所以对齐到16字节.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止境2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值