版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luohongtuCSDN/article/details/83151102
目录:
C结构体学习
- 学习目标:
- 结构体的概念及用途
- 结构体类型的声明及其字长
- 结构体变量的定义,访问和赋值
- 结构体数组和结构体指针的使用
初识结构体
声明结构体类型
-
格式:
struct 结构体名{ 数据类型1 结构体成员1: 数据类型2 结构体成员2: 数据类型3 结构体成员3: ... }
-
支持的数据类型
-
内置类型
- char
- short
- int
- float
- double
-
自定义类型
- struct结构体
- union联合体
- enum枚举类型
-
-
for example:
struct person_infor{ char name[SIZE_IN]; /*姓名*/ int age; /*年龄*/ char gender; /*性别*/ char profession[SIZE_IN]; /*职业*/ char address[SIZE_IN]; /*地址*/ char telephone[SIZE_IN]; /*电话*/ }
定义结构体变量
-
声明结构体类型,并定义结构体变量
struct persion_infor{ char name[SIZE_IN]; int age; char gender; ... } struct persion_infor Raul,Philip; struct persion_infor Joe;
-
不声明结构体类型,直接定义结构体变量
struct{ char name[SIZE_IN]; int age; char gender; ... } Raul,Philip,Joe;
-
使用typedef得到简化的结构体类型名,再定义结构体变量
typede struct persion_infor{ char name[SIZE_IN]; int age; char gender; ... } infor; infor Raul,Phliip;
补充下 typedel用法:
typedef oldType new Type; typedef char myChar; myChar s="hello world"; typedel struct{} infor; // 原类型 新类型 infor student_infor; //声明变量
结构体的存储形式
- 结构体的本质
- 就是物理连续的线性数据结构
- 优化:
- 为了方便寻址,一般以其本身数据类型的字节长度为基本单位对齐。(类似mysql的char)
- 分配策略可以调整,通过使用#pragma pack 预处理命令来改变对齐规则(后面在了解下)
- 示例:
#