C语言数据在内存中的存储和结构体&联合体&枚举(已修)

本文介绍了无符号整型的特性,char类型的取值范围,以及如何处理整数和浮点数的打印与比较。讨论了匿名结构体、结构体的内存对齐规则、自引用和联合体的使用,以及枚举的定义和优点。特别强调了代码可读性和内存布局在结构体设计中的考虑。
摘要由CSDN通过智能技术生成

1.无符号整形提升时,直接补零

2.char类型的取值范围是-128~127

无符号的话是0~255

3.要直接打印时也是先提升后打印

4.int就是十进制

5.1E10就是1乘以10的10次方

6.浮点数存储会存在误差,所以要相减然后用这个值比较某个范围

7.匿名结构体只能用一次,就是在全局变量那里用

8.关于结构体的自引用:可以在结构体内部创建并存储该结构体类型变量的指针(即地址)

9.结构体内存对齐是一个一个的来对齐的,对齐的目标点是当前的成员的占用空间(与编译器默认某个值(VS默认是8)的较小值)的倍数

11.对齐了之后又要整体对齐内部   最大   单个占位空间值的整数倍

13.如果在结构体内部有结构体,那么里边那个结构体所占据的空间的那个起始的点要从该结构体整体的对齐数开始,但若两结构体相同,则报错。

14.在设计结构体时,我们尽量要将占用空间小的统统放到一块

15.位段后边数字的单位是比特位

16.在VS上:

(1).从右往左使用(然后呈现在内存上的就是我直接写出来的数据(内存呈现上右边大))

(2).如果剩余空间不够下一个成员使用,就浪费

17.位段的各个成员并非都有地址,所以不能对其使用&操作符,如果要赋值的话,就得要先造一个临时变量,然后再通过其赋值给位段的各个成员

18.联合体公用空间

19.联合体的大小:

联合体的大小至少是最大成员的大小.

当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍

22.结构体的关键字:struct

联合体:union

枚举:enum

23.枚举使用示例:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

enum gender
{
	Male = 5,
	Female = 8,
	Serect
};

int main()
{
	printf("%d\n", Male);
	printf("%d\n", Female);
	printf("%d\n", Serect);
	//输出:
	//5
	//8
	//9
	//上边的Male和Female等统称枚举常量,他们是常量
	//所以下边代码
	//Male = 2;
	//是错的
	return 0;
}

24.我们常用枚举常量而不是#define,增加代码可读性

增加:

1.

struct stu 
{
	int a;
	char b;
	int d;
};
//12个四节

是起始的点要跟他对齐

2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值