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

作业信息

这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 <作业要求的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK09
这个作业的目标 <写上具体方面>计算机科学概论(第七版)第10,11章 并完成云班课测试,《C语言程序设计》第8章并完成云班课测试
作业正文 ... 本博客链接https://www.cnblogs.com/tanzitian11/p/18652686

教材学习内容总结

计算机科学概论(第七版)》第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 &num;
}

五、指针与字符串
在 C 语言中,字符串可以用字符数组表示,也可以用字符指针指向字符串常量。例如char *str = "Hello";,此时str指向字符串常量"Hello"的首字符。可以通过指针遍历字符串中的字符,但不能修改字符串常量的内容。若要修改字符串,应使用字符数组。

六、指针数组
指针数组是一个数组,其元素为指针类型。例如int *arr[5];表示arr是一个包含 5 个元素的数组,每个元素都是int *类型的指针。指针数组常用于处理多个字符串或指向不同对象的指针集合等情况。

指针在 C 语言编程中虽然功能强大,但也容易出错,如果使用不当可能导致程序崩溃或产生难以调试的错误。因此,在使用指针时需要深入理解其概念和原理,谨慎操作内存地址,确保程序的正确性和稳定性。

基于AI的学习



代码调试中的问题和解决过程

  • 问题1:指针未初始化

include <stdio.h>


int main() {
    int *ptr;
    *ptr = 10;  // 错误:使用未初始化的指针
    printf("%d\n", *ptr);
    return 0;
}
  • 问题1解决方案:对指针进行初始化,可以将其初始化为 NULL 或让它指向一个有效的内存地址。
  • 问题2:指针越界访问
#include <stdio.h>
int main() {
    int arr[3] = {1, 2, 3};
    int *ptr = arr;
    for (int i = 0; i <= 3; i++) {  // 错误:越界访问
        printf("%d ", *(ptr + i));
    }
    return 0;
}
  • 问题2解决方案:

include <stdio.h>

int main() {
    int arr[3] = {1, 2, 3};
    int *ptr = arr;
    for (int i = 0; i < 3; i++) {  // 修正:使用 < 代替 <=
        printf("%d ", *(ptr + i));
    }
    return 0;
}

其他(感悟、思考等,可选)

学习 C 语言指针的过程,就像是一场充满挑战与惊喜的探险。起初,面对那些复杂的语法和抽象的概念,感觉仿佛置身迷雾,指针的指向、多级指针的嵌套让人晕头转向。但随着深入钻研,逐渐领悟到它的精妙。它赋予程序极大的灵活性,能高效地操控内存,像精准的手术刀,让数据处理游刃有余。当成功利用指针优化代码,实现复杂功能时,那种成就感无与伦比。这不仅提升编程技能,更磨炼逻辑思维,让我懂得计算机底层运行的奥秘,每一次突破都激励我在编程之路上奋勇前行。

posted @   779315  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示