C/C++自定义类型(详解struct,enum,union)

目录

一,struct

1)结构及一般使用方法

2)无名结构体

3)巧用typedef

4)struct小细节

5)补充内存对齐(提高程序可移植性,提高运行效率)

二,enum

1)结构及一般使用方法

2)enum的作用和优点

三,union

1)结构

2)特点


一,struct

1)结构及一般使用方法
struct name{//名称
    //数据类型
      int a;
      char b;
      float c;
};//注意有分号,可在'}'后面,';'前面直接创建变量
struct name xiao={666,'s',3.14};//利用名称创建变量
2)无名结构体

无名结构体就是没有名称,意味着,除了在'}'后面,';'前面直接创建变量,无法在其他地方创建变量。

3)巧用typedef

利用typedef能够给struct起一个别名,起到简化程序,使代码可读性更强,

typedef struct name{
      int a;
      char b;
      float c;
}han;
struct name xiao={666,'s',3.14};
han kun={666,'s',3.14};//han等于struct name;
4)struct小细节

struct 在创建变量前是不会分配内存空间的。struct在'}'后面,';'前面直接创建的变量是全局变量。

5)补充内存对齐(提高程序可移植性,提高运行效率)

先讲解内存对齐:

首先理解内存对齐规则:

1)第一个数据的偏移量为0(偏移量为距离首字节的距离)

2)每个数据的存储位置必须是这个数据的对齐数的整数倍字节位置(对齐数为系统默认的对齐数和自身字节大小中的较小值。

3)最后内存必须是结构体中数据中最大对齐数的整数倍。

4)如果嵌套了结构体,则这个结构体的对齐数是结构体中数据中最大的对齐数

5)如果是数组的话对齐数是数组类型,但是空间必须大于数组,而且是对齐数整数

接下来看题讲解

//求AA_t大小
typedef struct{
  int a;
  char b;
  short c;
  short d;
}AA_t;

二,enum

1)结构及一般使用方法
enum name{//名称
  //数据
  int a,//默认第一个为0,往下每次递增1
  int b,//b=1
  int c=6,//可以自行赋值,往下每次递增1
  int d  //d=7
}name1;//也可在创建变量
 
enum name name2=3;//创建变量
2)enum的作用和优点

类似于宏,相当于其起别名,但它有自己的优点:

  1. 增加代码的可读性和可维护性
  2. #define定义的标识符比较枚举有类型检查,更加严谨。
  3. 便于调试
  4. 使用方便,一次可以定义多个常量

三,union

1)结构
union name{//名称
  //数据成员
  int a;
  char c;
}name1;//类推可以创建变量
union name name2;//创建变量
2)特点

所有成员共用一块空间,所有它们不能数据成员同时存在,改变一个数据成员所有的数据成员都会改变,数据成员的地址都一样。

篇外:由于篇幅有限,如果有不了解的概念等,可以评论区告诉我,我会为诸位一一解答

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

非洲下暴雨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值