2024-2025-1学号20241309《计算机基础与程序设计》第十三周学习总结
作业信息
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2024-2025-1计算机基础与程序设计第十三周作业 |
这个作业的目标 | 自学教材《C语言程序设计》第12章并完成云班课测试 |
作业正文 | 2024-2025-1学号20241309《计算机基础与程序设计》第十三周学习总结 |
教材学习内容总结
《C语言程序设计》第十二章:
结构体的概念
结构体是一种用户自定义的数据类型,它允许将不同类型的数据成员组合在一起,用来描述一个复杂的对象或实体。例如,可以定义一个结构体表示学生信息,其中包含学号(整型)、姓名(字符数组)、成绩(浮点型)等不同类型的数据成员。
结构体的定义形式
基本语法:
struct 结构体名 {
数据类型 成员1;
数据类型 成员2;
// 可继续罗列多个成员
};
例如:
struct student {
int num;
char name[20];
float score;
};
定义结构体变量的方式:
先定义结构体类型,再定义变量:按照上述定义结构体类型后,使用 struct student stu1, stu2; 这样的语句来定义具体的结构体变量 stu1 和 stu2。
在定义结构体类型的同时定义变量:
struct student {
int num;
char name[20];
float score;
} stu1, stu2;
结构体成员的访问
通过结构体变量名和成员运算符( . )来访问结构体中的成员。例如对于前面定义的 stu1 变量,如果要给学号赋值,可以写成 stu1.num = 1001;,如果要输出姓名,可以使用 printf("%s", stu1.name); 等。
结构体数组
可以定义结构体类型的数组,用于存储多个具有相同结构体类型的元素。例如:
struct student class[30];
定义了一个可以存放 30 个学生信息的结构体数组 class,访问数组中某个结构体元素的成员时,和普通结构体变量访问类似,如 class[0].num 表示访问数组中第一个元素(也就是第一个学生结构体)的学号成员,并且可以通过循环等方式对结构体数组中的元素进行批量赋值、操作和输出等。
结构体指针
定义和使用:可以定义指向结构体的指针,例如 struct student p;,然后通过取地址符 & 让指针指向具体的结构体变量,如 p = &stu1;。通过指针访问结构体成员可以使用 -> 运算符,比如 p->num 等价于 (p).num,都是访问指针所指向结构体变量的学号成员。
在函数间传递结构体指针:将结构体指针作为函数参数传递,可以在函数中修改所指向结构体的内容,提高效率,避免整个结构体的拷贝开销,常用于对结构体数据进行修改等操作的函数设计中。
结构体的嵌套
结构体中的成员可以是另一个结构体类型,形成结构体的嵌套。例如定义一个日期结构体,然后在学生结构体中包含这个日期结构体作为成员来表示学生的生日等信息。访问嵌套结构体的成员时,要使用多层的成员运算符或者指针的多层解引用及 -> 运算符等按照层次依次访问。
数据结构基础相关内容
数据结构概述:介绍了数据结构的概念,即数据元素相互之间存在的一种或多种特定关系的集合,常见的数据结构有线性结构(如顺序表、链表等)、树形结构、图状结构等,结构体常被用于构建这些数据结构的基础元素类型。
用结构体构建简单数据结构示例(以链表为例):
链表节点结构体定义:通常包含数据域(可以用结构体存放具体的数据内容)和指针域(用来指向下一个节点的指针,一般为 struct 节点结构体名 * 类型),比如:
struct Node {
int data;
struct Node *next;
};
通过操作结构体指针实现链表的创建、插入、删除等基本操作,比如动态申请节点内存空间(使用 malloc 函数等),然后连接各个节点构成链表,实现数据的动态存储和组织,展示了如何利用结构体在底层构建起简单的数据结构来满足更复杂的程序数据管理需求。
基于AI的学习
代码调试中的问题和解决过程
问题一:在进行结构体中部分元素的交换后,发现结构体中的元素不匹配
解决方法:对结构体整体进行交换
问题二:使用fread和fwrite函数对整块数据进行读写,发现虽然可以从文件中正常读取数据并显示在屏幕上,但是写入文件的内容十分奇怪。
解决方法:换用fscanf和fprintf函数
其他(感悟、思考等,可选)
其他学习内容:C文件系统