C/C++学习之复合类型(结构体、枚举等)

1、结构体定义及赋值

1.1、复合类型在内存中存放的模型

这里写图片描述

1.2、定义结构体格式

struct 结构体名称
{
结构体成员列表
} ; 分号结尾

在这里插入图片描述

1.3、在主函数中结构体表述格式

在这里插入图片描述
定义结构体变量:
①struct 结构体名称 结构体变量名
②结构体变量名.机构体成员列表 = 值
注:如果是字符串类型 需要使用strcpy;

#

1.4、赋值方式

1.4.1、按照结构顺序赋值

在这里插入图片描述

1.4.2、赋值方式2

在这里插入图片描述

1.4.3、赋值方式3

在这里插入图片描述
注意:如果是是字符串格式需要使用strcpy来进行赋值

1.4.4 赋值方式4

在这里插入图片描述

1.5、结构体大小和内存结构

1.5.1、结构体大小

在这里插入图片描述
打印结果:结构体大小56

注意:结构体需要根据数据类型进行内存对齐;

1.5.2、内存结构模型图

注意:所有数据类型的大小在内存中存储一定是他的类型的倍数,方框一定是结构体最大的类型字节。
比如:结构体中有int,char,float,short,double。那么框的大小是8个字节。
在这里插入图片描述

1.6 结构体数组

1、结构体数组格式
在这里插入图片描述
2、结构体和指针
①结构体成员为指针:
在这里插入图片描述
②结构体指针
在这里插入图片描述
释放
在这里插入图片描述
③堆空间开辟结构体,通过指针来实现

在这里插入图片描述

1.7 结构体作为函数参数

1、结构体做为形参,不会改变主函数中实参的值;
在这里插入图片描述
2、结构体指针做为形参
在这里插入图片描述
返回方式
1、结构体作为返回值
在这里插入图片描述
2、结构体指针作为返回值

在这里插入图片描述

1.8 结构体嵌套结构体

1、定义及赋值
在这里插入图片描述

1.9 结构体找到属性的偏移量

引入头文件 #include <stddef.h>
函数为offsetof(结构体名称,属性) 返回值就是偏移量

1.10 结构体的bit定义

 typedef struct _mm_com_hdr
 {
	 UINT8 tag;
	 UINT8 nodeID;
	 UINT8 linkID;
	 UINT8 dtmb_support:1,
	 	   dtmb_icmp:1,
	 	   rsv:6;			// srv保留位,如果只是用其中几位的话,最好使用保留位进行存放。
	 UINT16 length;
	 UINT16 sn;	 
	 
 }MM_COM_HDR,*PMM_COM_HDR;

2、共用体

联合union是一个能在同一个存储空间存储不同类型数据的类型;
格式:union 共用体名称 成员列表 共用体变量名
在这里插入图片描述
注意:共用体所占的内存长度等于其最长成员的长度;
在共用体中最后一次赋值,它的值为准确的。

3、枚举

enum 将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
在这里插入图片描述
应用方向:流程化操作,枚举与switch联合使用

4、typedef

作用:为一种数据类型(基本类型或自定义数据类型)定义一个新名字,不能创建新类型
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值