1、构造数据类型
结构体、共用体、枚举。
2、结构体
1、结构体的定义
结构体是一个自定义的复合数据类型,它允许将不同类型的数据组合在一起。
struct 结构体名
{数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;数据类型4 成员变量4;
}
2、结构体变量的定义
数据类型 变量;
3、结构体的初始化
1、全部初始化
struct student s = {"zhangsan", 'm', 19, 100};
2、局部初始化
struct student s = {.name = "zhangsan",.score = "100",
};
4、结构体元素的访问
结构体访问成员变量最终类型由成员变量决定
结构体变量访问成员变量: .
结构体指针访问成员变量: —>
5、结构体的存储:
内存对齐
结构体变量只能存储在内存地址为自身基本类型长度整数倍的内存单元
结构体整形的大小必须为最大类型长度的整数倍
6、结构体数组
数组类型 数组名[元素个数];
#include <stdio.h>struct Student {char name[50];int age;
};// 函数:通过指针传递结构体数组
void printStudents(struct Student *students, int size) {for (int i = 0; i < size; i++) {printf("Student %d: Name = %s, Age = %d\n", i+1, students[i].name, students[i].age);}
}int main() {// 定义一个结构体数组struct Student students[3] = {{"Alice", 20},{"Bob", 22},{"Charlie", 21}};// 调用函数,传递结构体数组printStudents(students, 3);return 0;
}
3、共用体
union
共用体与结构体定义和元素访问都一致
结构体成员变量空间都是独立的,共用体成员变量空间是共享的
内存大小端
内存低地址存放低数据位称为小端
内存低地址存放高数据位称为大端
4、枚举
enum
1、枚举的定义
enum Weekday {Sunday, // 默认为 0Monday, // 默认为 1Tuesday, // 默认为 2Wednesday, // 默认为 3Thursday, // 默认为 4Friday, // 默认为 5Saturday // 默认为 6
};
枚举常量第一个值默认为0,后续枚举常量的值默认为前一个枚举常量的值+1
2、枚举的使用
#include <stdio.h>enum Weekday {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
};int main() {enum Weekday today;today = Wednesday; // 设置枚举值为 Wednesdayif (today == Wednesday) {printf("Today is Wednesday.\n");}return 0;
}