2024-2025-1 20241408陈烨南《计算机基础与程序设计》第十二周学习总结

news/2024/12/15 22:27:04/文章来源:https://www.cnblogs.com/chenyenai/p/18608837

2024-2025-1 20241408陈烨南《计算机基础与程序设计》第十一周学习总结

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计)
这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12
这个作业的目标
作业正文 本博客链接

教材学习内容总结

一、指针与数组的关系

  1. 内在联系
    在C语言中,数组名可以被看作是一个指针常量,它指向数组的首元素地址。例如,对于一个整型数组 int arr[5];,数组名 arr 就相当于一个指向 arr[0] 的指针。可以通过指针运算来访问数组中的各个元素,指针的移动是以所指向数据类型的大小为单位的,这为遍历数组提供了一种灵活的方式。
  2. 通过指针访问数组元素
    可以定义一个指针变量并让它指向数组,然后利用指针的偏移来读写数组元素。比如:
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;  // 让指针p指向数组arr的首元素
printf("%d", *(p + 2));  // 会输出数组中索引为2的元素值,即3

二、指向数组的指针

  1. 定义与初始化
    可以定义指向数组的指针变量,形式如 类型 (*指针变量名)[数组大小];。例如,int (*p)[5]; 定义了一个指针 p,它可以指向包含5个整型元素的数组。初始化时,可以将其指向一个已定义好的同类型同大小的数组,像 int a[5]; p = &a; 这样操作后,p 就指向了数组 a
  2. 指针运算特点
    指向数组的指针进行算术运算时,会按照数组元素的个数来移动。例如上述 p 指向 a 数组,执行 p++ 操作时,p 会移动到下一个包含5个整型元素的数组的首地址(实际移动的字节数取决于整型的字节大小乘以5),这在处理多维数组等场景中非常有用。

三、多维数组与指针

  1. 二维数组与指针的关系
    二维数组在内存中也是按行顺序存储的线性结构。对于二维数组 int a[3][4];,可以把 a 看作是一个包含3个元素的一维数组,而每个元素又是一个包含4个整型元素的一维数组。可以定义指针指向二维数组的行,例如 int (*p)[4] = a;,这里 p 指向 a 的首行,通过 p 的移动可以逐行访问二维数组的内容,同时也能用指针运算来访问具体的元素,如 *(*(p + 1) + 2) 可以访问 a[1][2] 这个元素。
  2. 更高维数组情况
    类似的原理可以推广到更高维的数组,理解数组在内存中的存储顺序以及通过合适的指针定义和运算来访问各元素。

四、指针数组

  1. 定义与用途
    指针数组是一个数组,其元素都是指针类型。例如 int *arr[5]; 就定义了一个包含5个元素的指针数组,每个元素都可以指向一个整型变量或者整型数组元素等。指针数组常用于字符串数组的表示,比如用字符指针数组来存储多个字符串,方便进行字符串的操作和管理。
  2. 初始化与操作
    初始化时可以给各个指针元素赋予相应的地址值,在后续使用中可以通过数组下标访问不同的指针,进而通过指针访问所指向的数据内容,比如遍历字符串指针数组来输出各个字符串等操作。

五、数组指针作为函数参数

  1. 传递数组给函数
    在C语言中,将数组作为函数参数传递时,实际传递的是数组的首地址(也就是一个指针)。形参可以用指针形式或者数组形式来接收,例如:
void func(int *arr, int n);  // 指针形式接收
void func(int arr[], int n);  // 数组形式接收(本质也是指针)

调用函数时可以直接传入数组名,像 int a[5]; func(a, 5); 这样,这样函数内部就能通过指针操作来访问和处理传入的数组元素了。
2. 二维数组作为函数参数
对于二维数组作为函数参数,需要明确指定第二维的大小,形参形式如 void func(int (*arr)[列数], int 行数);,这样函数内部才能正确地通过指针运算来访问二维数组的各个元素,确保操作的正确性和内存访问的合法性。

总之,指针和数组在C语言中有着紧密的联系,掌握它们之间的关系以及相关的操作对于灵活运用C语言进行高效的程序设计、数据处理等方面有着至关重要的作用。

基于AI的学习


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

问题1:字符串没有正确倒序输出
症状: 程序输出的字符串顺序与预期相反,即从字符串的开头开始输出。
原因: 循环的起始条件设置错误,应该是 i = length - 1 而不是 i = 0。
解决: 检查循环的起始条件,并确保它是从字符串的最后一个字符开始。
问题2:输出包含字符串末尾的空字符
症状: 字符串正确倒序输出了,但是末尾多了一个空字符。
原因: 字符串在C语言中以空字符 '\0' 结尾,循环没有正确地排除这个空字符。
解决: 确保循环在遇到空字符之前停止。可以通过检查 str[i] != '\0' 来实现,或者更简单地,使用 length - 1 作为循环的上限,因为 strlen 函数返回的长度不包括空字符。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第十二周 200/2400 2/20 10/240

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853511.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年知识库趋势:AI工具引领变革

随着数字化转型的深化,企业内部知识库已成为推动企业创新、提升团队协作效率的核心要素。展望2025年,企业内部知识库将呈现出哪些新趋势?AI工具又将如何在这场变革中发挥引领作用?本文旨在探讨这些问题,为企业构建未来知识管理战略提供参考。一、2025年知识库新趋势 智能化…

SkiaSharp部署到Linux不工作,提示libSkiaSharp.so找不到的解决办法

Nuget安装下面的包即可解决,SkiaSharp.NativeAssets.Linux.NoDependecies

403绕过神器: 4-ZERO-3

免责声明 本公众号分享的安全工具和项目均来源于网络,仅供学术交流,请勿直接用于任何商业场合和非法用途。如用于其它用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。介绍 4-ZERO-3 工具可绕过 403/401。此脚本包含所有可能的技术来实现相同的目的。 注意…

拉格朗日插值和数值微积分

+++ date = 2024-11-30T15:26:27+08:00 draft = true title = 拉格朗日插值和数值微积分 +++ 初次发布于我的个人文档。(每次都是个人文档优先发布哦) 本文想简要介绍和推导一下拉格朗日插值和数值积分方法。 什么是插值? 所谓的插值就是已知几个离散点的信息视图求一个满足…

linux之slb四层负载(lvs)

负载均衡-动静分离slb四层负载LVS(Linux Virtual Server) 是一个开源的负载均衡解决方案,运行在 Linux 操作系统上,用于在多个后端服务器之间分配客户端的请求,从而实现高可用性和负载均衡。它通常用于大规模网站、应用程序和微服务的架构中,适用于高并发场景,以提高系统…

CLion配置cout打印语句快捷键

点击菜单栏的 File -> Settings->Editor -> Live Templates 点击 Define,选择 C++。 点击Apply 和 OK 保存。 当我们sout时,自动出现打印语句。 本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/18608801,如有侵权…

域名信息

引子:上一章介绍了服务器的信息收集。本篇则介绍在面对存在Web资产企业时,其域名信息该如何收集。附:完整笔记目录~ ps:本人小白,笔记均在个人理解基础上整理,若有错误欢迎指正! 2.1 域名信息引子:上一章介绍了服务器的信息收集。本篇则介绍在面对存在Web资产企业时,其…

Go单体服务开发最佳实践

转: https://www.cnblogs.com/kevinwan/p/16193504.html ------------------------------------------------------------------------------------------ 单体最佳实践的由来对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,并且此时用户体量也很小,QPS 也…

Adobe Bridge 2025下载与安装

1、安装包 我用夸克网盘分享了「Bridge 2025」 链接:下载地址 2、安装教程(安装前关闭系统防护) 1) 下载软件安装包,双击Set-up.exe安装2) 修改安装目录,点击继续3) 点击继续,提示正在安装进度4) 安装完成,点击启动5) 启动程序

fastapi本地部署,网页调用

Fastapi本地部署: 1、启动main.py。 文件test_main.http,点击3处运行,运行接口报错: Response code: 504 (Gateway Time-out); Time: 10032ms (10 s 32 ms); Content length: 101929 bytes (101.93 kB)2、文件main.py运行。 在浏览器输入:http://10.58.71.144:8000/ 。 打…

【MySQL内核】MySQL中一条 SQL语句是如何执行的?

MySQL执行一条SQL语句,涉及到以下几个过程:1、客户端连接 要执行 SQL 语句,首先用户需要通过客户端连接到MySQL服务器,连接时需要指定用户名和密码,MySQL服务器中的连接器模块会对用户提供的用户名和密码进行验证,并检查用户是否拥有执行特定SQL语句的权限。一个用户成功…

Adobe Audition 2025各版本安装包下载与安装

1、安装包 我用夸克网盘分享了「Adobe Audition 2025」 链接:下载地址 2、安装教程(安装前关闭系统防护) 1) 下载软件安装包,双击Set-up.exe安装2) 修改安装目录,点击继续3) 点击继续,提示正在安装进度4) 安装完成,点击启动5) 启动程序…