C语言-第十一章结构体

数组: 一组同类型数据的集合
结构体:一组类型不定的数据的集合
数组: 直接声明变量 int arr[10];
结构体:先声明定义结构体类型
struct 结构体名字{
成员类型 成员名字;

};
有了结构体类型之后 可以声明变量
struct 结构体名字 变量名;
struct Stu s;
数组: 数组通过下标的方式进行访问数组元素 数名名[下标]
结构体:每一个结构体变量访问元素都是通过 成员名字 来访问
结构体变量名.成员名字
数组: {}
结构体:{}
保存一个学生的信息
姓名 年龄 性别 成绩 …
char name[24] = “张三”
int age = 11;
char gender = ‘F’;
int score = 98;
1. 定义结构体的语法 定义结构体类型 混合类型
struct 结构体名{
//成员类型 成员名字;

};
struct Emp{
int id;
char name[24];
int age;
double salary;
};
2. 定义结构体变量
struct Emp (结构体类型)
struct Emp e;
struct Emp e1,e2;
3. 结构体变量的初始化
struct Emp e = {110,“王五”,18,3290.3};
//值与声明结构体成员时一一赋值
结构体变量如果不初始化,结构体变量的每一个成员都是垃圾值
部分成员初始化(部分成员,仅限从第一个成员开始) 剩下自动"零"
= {} 直接全部初始化为"零"
结构体变量一旦定义定义,不可以再使用= {}的形式进行赋值操作
4. 结构体变量访问成员
结构体变量定义之后 ,只能通过
结构体变量.成员名字 的形式进行单独访问和操作
e.id = 110;
//e.name = “张三丰”; 成员name是一个数组
strcpy(e.name,“张三丰”);
5. 结构体成员变量是数组的情况
如果要访问必须通过 结构体变量.成员名字[下标] 形式来访问
struct Stu{
int id;
char name[24];
int scores[3];
};
struct Stu s = {};
s.scores[0] = 100;
6. 结构体数组

结构体对齐补齐

	对齐摆放:
		结构体成员在存储时会从自身长度整数倍的位置开始存储
		(超过4字节按4对齐)
	补齐长度:
		结构体的长度必须是结构体成员最大长度的整数位
		(超过4字节按4补齐)

位域: 已经淘汰了
结构体成员按二进制位存储
struct A{
char a:2;
char b:3;
char c:2;
};
struct B{
char a:2;
char :3;//空域
char c:3
};
sizeof: 取决于最大的成员 二进制位数
联合:
union
联合中所有的成员使用(共享)同一块内存
对其中一个成员进行赋值,其它成员也一并有值

联合的大小取决于联合中字长最宽的成员类型

大端 和 小端
机器存储数据的方式
大端: 低地址存储高字节数据 阅读习惯
小端: 低地址存储低字节数据

枚举
enum
enum DIR{UP,DOWN,LEFT,RIGHT};

所谓的枚举值 UP,DOWN,LEFt,RIGHT其实本质上还是int数值
如果不给枚举值指定特殊的值,从0开始递增1

如果给枚举值指定值那么该枚举值就固定,没有指定值的枚举值等于有指定过的值开始递增
enum COL{RED,YELLOW,GREEN=-1,GRAY,BLACK=5,BLUE};

C语言中枚举值和int可以相互赋值

复合类型:结构体struct 枚举enum 联合union最宽的成员类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值