当前位置:网站首页>C语言进阶要点笔记4
C语言进阶要点笔记4
2022-04-23 05:49:00 【~哈】
目录
- 五、结构体
1、定义和概念
2、结构体数组
3、结构体指针
4、结构体内存分配
5、位段(位域)
- 六、共用体
- 七、枚举类型
- 五、结构体
1、定义和概念
struct 结构体类型名
{
成员列表
};
可以先说明再定义,也可以在分号之前接着就定义
在分号之前定义结构体变量,同时省略结构体类型名,则之后不能再定义此种结构体变量,此时定义了就是唯一的,常用于使用次数有限的全局变量
typedef struct (结构体类型名可有可无)
{
成员列表
}类型名称; 分号前不能再定义变量
若要定义变量则只需 类型名称加变量名
变量名加点加成员名进行赋值
结构体说明时其成员列表可以使另一结构体,使用的时候可多级引用
相同类型的结构体变量可以直接相互赋值
2、结构体数组
结构体数组是数组,由若干个相同类型的结构体变量组成的集合
struct 结构体类型名 数组名[元素个数];
3、结构体指针
结构体指针定义和赋值的方法和普通变量一样
结构体整体引用也和普通变量一样
但引用结构体成员时不同,需要加括号,.的优先级比*高,(*ps).num
加括号麻烦,可用指向运算符(->)代替,ps->num
当有嵌套,引用里面结构体的成员时,第一层用指向运算符第二层用点运算符
4、结构体内存分配
#pragma pack (value)时的指定对齐值value。
value只能是: 1 2 4 8等
字节对齐,当前成员为value整数倍保持不变;当前成员小于value,但是加上后一成员刚好是value的整数倍也不变;当前成员小于value,加上后一成员也小于value的整数倍则补成value的整数倍。
可用sizeof测量所占空间
5、位段(位域)
struct packed_data
{
unsigned int a:2;
unsigned int b:6;
unsigned int c:3;
unsigned int :1; // 无意义的位段
unsigned int d:4;
unsigned int i;
} data;
冒号后面数字表示占几位,不能对位段成员取地址
赋值时不要超出位段定义的范围,赋值超出范围会进行截取操作
可以定义无意义的位段,单纯的占空间,以保证后面的成员占据所需要的位
同一个结构体中,成员变量可以同时包括位段和普通成员变量
- 六、共用体
共用体和结构体类似,也是一种构造类型的数据结构
共用体的定义方法也和结构体的定义方法非常相似,将struct改成union即可,其他的使用方法一样,但是不允许有位段
在进行某些算法的时候,需要将几种不同类型的变量存到同一段内存单元中,几个变量所使用的的空间相互重叠
共用体的大小是其占内存长度最大的成员的大小
共用体的成员在同一时间只有一个有效,常用于网络协议发送过程中
- 七、枚举类型
将变量的值一一列举出来,变量的值只限于列举出来的值的范围内
enum 枚举类型名
{
枚举值列表, (成员之间用逗号隔开)
};
也可用typedef
用枚举的地方都能用宏定义代替,反之不行
枚举成员可以为任意内容,其实际值为整数,默认从0开始递增,也可以通过给成员赋值改变成员对应的整数值
枚举变量的定义:enum 枚举类型名 枚举变量名
版权声明
本文为[~哈]所创,转载请带上原文链接,感谢
https://blog.csdn.net/LF_1845529754/article/details/104025323
边栏推荐
猜你喜欢

Graduation project, viewing screenshots of epidemic psychological counseling system

【UDS统一诊断服务】四、诊断典型服务(6)— 输入输出控制单元(0x2F)

Initialization of classes and objects (constructors and destructors)

【UDS统一诊断服务】四、诊断典型服务(1)— 诊断和通信管理功能单元

C语言的运算符

Installation of GCC, G + +, GDB

C语言实用小技巧合集(持续更新)

进程管理命令

函数的调用过程

A solution to replace not in in SQL
随机推荐
搭建openstack平台
圆整 round 的一点点小细节
解决ArcGIS分区统计显示太多唯一值执行失败
【UDS统一诊断服务】四、诊断典型服务(2)— 数据传输功能单元
for()循环参数调用顺序
ArcGIS表转EXCEL超出上限转换失败
Matlab calibration board corner detection principle
Figure guessing game
Conversion between JS object and string
实现一个计算m~n(m<n)之间所有整数的和的简单函数
Rust 中的指针:Box、Rc、Cell、RefCell
声明为全局变量
带默认模板实参的类模板与模板模板形参的匹配
【UDS统一诊断服务】四、诊断典型服务(6)— 输入输出控制单元(0x2F)
爬取蝉妈妈数据平台商品数据
如何安装jsonpath包
[ThreadX] ThreadX source code reading plan (I)
【UDS统一诊断服务】四、诊断典型服务(1)— 诊断和通信管理功能单元
C语言循环结构程序
【UDS统一诊断服务】二、网络层协议(2)— 数据传输规则(单帧与多帧)