学期:2024-2025-1 学号:20241303 《计算机基础与程序设计》第九周学习总结

作业信息

这个作业属于哪个课程 <班级的链接>(如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语言程序与设计》 指针内容总结

一、指针的基本概念

  1. 指针变量:指针是一种特殊的变量,其值为内存地址。声明指针变量的一般形式为数据类型 *指针变量名;,例如int *p;表示p是一个指向int类型数据的指针变量。
  2. 取地址运算符&:用于获取变量的内存地址。如&a表示变量a的地址,可将该地址赋值给指针变量,使指针指向该变量,例如p = &a;

二、指针的运算

  1. 赋值运算:指针可以被赋值为同类型变量的地址、NULL(空指针,表示不指向任何有效地址)或其他合法的指针值。例如int *q = NULL;q = p;p为已初始化的同类型指针)。
  2. 算术运算
    • 指针与整数相加或相减:当指针指向数组元素时,指针 + n表示指向当前指针位置往后第n个同类型元素的地址,指针 - n则表示往前第n个元素的地址。移动的字节数取决于指针所指向的数据类型的大小,例如int类型指针加 1,则地址增加 4 字节(假设int占 4 字节)。
    • 两个指针相减:只有当两个指针指向同一数组中的元素时,相减才有意义,其结果为两指针间元素的个数。

三、指针与数组

  1. 数组名与指针的关系:在 C 语言中,数组名在大多数情况下会被隐式转换为指向数组首元素的指针。例如int arr[5];arr等价于&arr[0],可以将其赋值给int *类型的指针变量,如int *p = arr;
  2. 通过指针访问数组元素:利用指针可以方便地遍历数组。例如*(p + i)等价于arr[i],通过改变p的值和循环,可以灵活地访问数组中的各个元素。

四、指针与函数

  1. 函数参数传递指针:将指针作为函数参数传递,可以在函数内部修改调用函数中变量的值,实现数据的双向传递。例如:
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

main函数中调用swap(&x, &y);,可交换xy的值。
2. 函数返回指针:函数可以返回指针类型的值,但要注意返回的指针不能指向函数内部的局部变量(除非该局部变量为static修饰的静态变量),否则可能导致错误。例如:

int *func() {
    static int num = 10;
    return &num;
}

五、指针与字符串

在 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
posted @ 2024-11-23 20:22  段蕾  阅读(9)  评论(0编辑  收藏  举报