1.本章学习内容总结
1.1学习内容总结
1.结构体如何定义及成员如何赋值
- 先定义结构体再定义变量
struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; : 数据类型 成员名n; }; struct 结构体名 变量名;
- 在定义结构体同时定义变量
struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; .... }变量名;
- 成员的赋值
假如变量名是s,直接赋值:s.成员名=内容、当s是数组名是,利用strcpy赋值,赋值时注意是否需要加&
2.结构体数组排序做法
3.结构体指针怎么用
定义结构体指针:struct 结构体名 p;
利用(p)成员名或p->成员名访问结构体成员
# include <stdio.h> struct STU { char name[20]; int age; char sex; char num[20]; }; int main(void) { struct STU stu[5] = {{"小红", 22, 'F', "Z1207031"}, {"小明", 21, 'M', "Z1207035"}, {"小七", 23, 'F', "Z1207022"}}; struct STU *p = stu; return 0; }
此时指针变量 p 就指向了结构体数组的第一个元素,即指向 stu[0]。当一个指针指向一个数组后,指针就可以通过移动的方式指向数组的其他元素。这个原则对结构体数组和结构体指针同样适用,所以 p+1 就指向 stu[1] 的首地址;p+2 就指向 stu[2] 的首地址……所以只要利用 for 循环,指针就能一个个地指向结构体数组元素。同样需要注意的是,要将一个结构体数组名赋给一个结构体指针变量,那么它们的结构体类型必须相同。
4.共用体、枚举类型做法
- 共用体
定义:union 共用体名 { 成员列表 }; union 共用体名 变量名;
结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
共用体占用的内存等于最长的成员占用的内存。
- 枚举类型
enum 枚举类型标识名 { 枚举列表; }
例如: enum weekday{sun,mon,tue,wed,thu,fri,sat};
上面定义了名字为weekday,关键词为enum的枚举类型,{}中为枚举值,即变量可以取的值
枚举类型变量也有三种说明形式:
(1)先说明枚举类型名,再说明枚举变量。如:enum weekday s;
(2)在说明枚举类型名时,同时说明枚举变量。如: enum weekday{ sun,mon,tue,wed,thu,fri,sat }s;
(3)直接按枚举类型的结构模式说明枚举变量。如:enum{ sun,mon,tue,wed,thu,fri,sat }s;
5.文件读写,文件中数据如何读进结构体数组
- 定义文件指针:FILE *fp,FILE是文件类型定义符,fp是文件类型的指针变量
- 打开文件:fopen("文件名","文件打开方式");
- 关闭文件:fclose(文件指针);
将文件数据写入结构体数组可以用到fscanf函数或fgets函数。
2.综合作业--“我爱成语”
来源:https://www.cnblogs.com/xingyufen/p/12045019.html