作业信息
这个作业属于哪个课程 | <班级的链接>(如2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | <作业要求的链接>(如2024-2025-1计算机基础与程序设计第九周作业) |
这个作业的目标 | <写上具体方面> 计算机科学概论(第七版)第10,11章 并完成云班课测试,《C语言程序设计》第8章并完成云班课测试 |
作业正文 | ... 本博客链接 |
教材学习内容总结
《计算机科学概论(第七版)》第10、11章内容总结:
第10章 操作系统基础
- 操作系统的概念与功能:操作系统是管理计算机硬件和软件资源的程序,是用户与计算机硬件之间的接口。其主要功能包括资源管理(如CPU、内存、外设等)和任务调度。核心功能有进程管理、内存管理、文件系统管理、设备管理以及用户界面 。
- 进程管理:进程是程序的一个执行实例,有独立的内存空间和执行状态,包括运行态、就绪态、阻塞态等。操作系统通过特定的调度算法决定进程的运行顺序,常见调度算法有先来先服务、短作业优先、优先级调度、时间片轮转等.
- 内存管理:操作系统负责分配内存给进程,常见的内存分配方式有连续内存分配、分页系统、分段系统。虚拟内存技术可通过硬盘空间模拟出比物理内存更大的内存空间,让程序能使用更多内存.
- 文件系统:文件是数据存储的基本单位,操作系统管理文件的创建、删除、读取和写入等操作,并通过目录结构组织文件,还可对文件进行权限控制,文件通常存储在硬盘等外部存储设备上.
- 输入输出管理:输入输出设备包括键盘、鼠标、显示器、硬盘等。操作系统通过提供缓冲区和I/O调度算法,提高数据传输效率,减少等待时间.
第11章 数据库系统
- 数据库系统概述:数据库是有组织的数据集合,由数据库管理系统进行管理,提供高效的数据存储、查询、更新和管理功能。数据库管理系统确保数据的完整性、一致性和安全性.
- 数据模型:主要有层次模型、网状模型和关系模型。层次模型以树形结构组织数据;网状模型以图形结构组织,更灵活;关系模型以二维表格形式组织,是目前最常用的数据模型,关系数据库管理系统采用此模型.
- 关系数据库:表是基本存储单位,包含列(属性)和行(记录)。主键用于唯一标识每条记录,外键用于建立表之间的联系。数据完整性包括实体完整性、参照完整性和域完整性等.
- SQL语言:SQL是用于访问和操作数据库的标准语言,包括数据查询(SELECT)、数据操作(INSERT、UPDATE、DELETE)、数据定义(CREATE、ALTER、DROP)以及数据控制(GRANT、REVOKE)等功能.
- 数据库设计:实体-关系模型是一种图形化的数据库设计工具,用于描述数据库中的实体及其关系。规范化可消除冗余数据、避免更新异常,常见的规范化范式有第一范式、第二范式、第三范式等.
《C语言程序与设计》 指针内容总结
一、指针的基本概念
- 指针变量:指针是一种特殊的变量,其值为内存地址。声明指针变量的一般形式为
数据类型 *指针变量名;
,例如int *p;
表示p
是一个指向int
类型数据的指针变量。 - 取地址运算符
&
:用于获取变量的内存地址。如&a
表示变量a
的地址,可将该地址赋值给指针变量,使指针指向该变量,例如p = &a;
。
二、指针的运算
- 赋值运算:指针可以被赋值为同类型变量的地址、
NULL
(空指针,表示不指向任何有效地址)或其他合法的指针值。例如int *q = NULL;
,q = p;
(p
为已初始化的同类型指针)。 - 算术运算:
- 指针与整数相加或相减:当指针指向数组元素时,
指针 + n
表示指向当前指针位置往后第n
个同类型元素的地址,指针 - n
则表示往前第n
个元素的地址。移动的字节数取决于指针所指向的数据类型的大小,例如int
类型指针加 1,则地址增加 4 字节(假设int
占 4 字节)。 - 两个指针相减:只有当两个指针指向同一数组中的元素时,相减才有意义,其结果为两指针间元素的个数。
- 指针与整数相加或相减:当指针指向数组元素时,
三、指针与数组
- 数组名与指针的关系:在 C 语言中,数组名在大多数情况下会被隐式转换为指向数组首元素的指针。例如
int arr[5];
,arr
等价于&arr[0]
,可以将其赋值给int *
类型的指针变量,如int *p = arr;
。 - 通过指针访问数组元素:利用指针可以方便地遍历数组。例如
*(p + i)
等价于arr[i]
,通过改变p
的值和循环,可以灵活地访问数组中的各个元素。
四、指针与函数
- 函数参数传递指针:将指针作为函数参数传递,可以在函数内部修改调用函数中变量的值,实现数据的双向传递。例如:
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
在main
函数中调用swap(&x, &y);
,可交换x
和y
的值。
2. 函数返回指针:函数可以返回指针类型的值,但要注意返回的指针不能指向函数内部的局部变量(除非该局部变量为static
修饰的静态变量),否则可能导致错误。例如:
int *func() {
static int num = 10;
return #
}
五、指针与字符串
在 C 语言中,字符串可以用字符数组表示,也可以用字符指针指向字符串常量。例如char *str = "Hello";
,此时str
指向字符串常量"Hello"
的首字符。可以通过指针遍历字符串中的字符,但不能修改字符串常量的内容。若要修改字符串,应使用字符数组。
六、指针数组
指针数组是一个数组,其元素为指针类型。例如int *arr[5];
表示arr
是一个包含 5 个元素的数组,每个元素都是int *
类型的指针。指针数组常用于处理多个字符串或指向不同对象的指针集合等情况。
指针在 C 语言编程中虽然功能强大,但也容易出错,如果使用不当可能导致程序崩溃或产生难以调试的错误。因此,在使用指针时需要深入理解其概念和原理,谨慎操作内存地址,确保程序的正确性和稳定性。
基于AI的学习
代码调试中的问题和解决过程
问题1:在调用函数时,返回值使用return无法输出正确结果
方法:return只能返回一个变量,当存在多个变量时需要使用指针
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
问题2:输出变量地址时,会产生随机数
方法:将变量初始化
int main(){
int a=1;
**int *pa=&a;**
printf("a is %d,&a is %p,pa is %p",a,&a,pa);
}
问题3:使用动态数组时要注意指针变量内存的申请是否成功
方法:使用if语句进行判断
if(p==NULL);
if(p!=NULL);
问题4:注意释放内存空间
方法:使用free()
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第八周 | 1400/2000 | 1/2 | 20/20 | |
第九周 | 1600/2200 | 1/4 | 18/38 | |
第十周 | 500/1000 | 0/7 | 22/60 | |
第十一周 | 300/1300 | 0/9 | 30/90 |