结构体 位段 枚举 联合体

结构体对齐规则:

1.第一个成员在结构体变量偏移量为0的地址处

2.其他成员变量要对齐到对齐数的整数倍的地址处

对齐数=编译器默认对起数 和 成员字节大小中的较小值

3.结构体总大小为最大对齐数的整数倍 (每个成员变量都有一个对齐数)

4.嵌套结构体情况下,(嵌套结构体对齐到自己的最大对齐数的整数倍)结构体的整体大小为所有对齐数(含嵌套结构体的对齐数)的整数倍

位段:

位段类似结构体 位段成员后有冒号和一个数字

位段成员必须是int unsigned int signed int三种类型

位段是不跨平台的 可移植程序应避免使用位段

枚举 :

枚举一般用于一种属性的不同类型 比如

颜色的红绿蓝三种 ,礼拜中的礼拜一;二;三 ....日 

或者性别中的 男女 阴阳等等

而结构体 是一个物体的不同属性 如学生这个结构体

要形容学生 有姓名 ,年龄,性别,分数等

用#define 定义常量就可以 为什么还要使用枚举呢?

枚举的优点:

1.增加代码的可读性和可维护性

enum Color
{
    RED = 5,
    GREEN = 9,
    BLUE

};

这里的red就是5,后面代码中red就是5,出现green就是9, blue就是10

2.enum定义的标识符相对于#define 更加严谨 枚举有类型检查

3.防止命名污染

4.便于调试(test.c  变成test.exe可执行文件之前)要经过预编译  编译  汇编  链接

在编译过程中枚举的成员看到的和调试的是一样的  更便于调试

5.使用起来更加方便 一个color可以定义多个常量 红橙黄绿蓝靛紫

联合体:

联合体中成员于结构体不同他们是公用一块地址   都从首地址开始 

s和i 中较大值便是该联合体字节大小

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值