首页 > 编程语言 >2023-2024 20231313《计算机基础与程序设计》第十二周学习总结

2023-2024 20231313《计算机基础与程序设计》第十二周学习总结

时间:2023-12-14 20:37:22浏览次数:30  
标签:元素 一维 20231313 二维 2024 地址 数组 2023 指针

2023-2024 20231313《计算机基础与程序设计》第十二周学习总结

作业 速达
作业课程 班级链接
作业要求 计算机基础与程序设计第十二周学习总结
作业内容 《C语言程序设计》第11章并完成云班课测试
作业正文 我的作业


目录

教材总结

总结

《C语言程序设计》
指针和一维数组的关系,如何用指针引用和操作数组元素,如何用数组名和指针变量作为函数参数。指针和二维数组的关系,如何用行指针和列指针引用和操作二维数组元素,如何用指针数组作为函数参数。指针数组和字符串数组的区别和联系,如何用指针数组实现字符串的排序和输出。

学习过程中的问题

在理解指针和数组名的异同,以及指针运算和下标运算的区别、正确使用指针变量的类型,特别是对于二维数组的行指针和列指针,包括如何避免指针越界和空指针的错误,以及如何检查和调试指针相关的程序等方面的内容存在一定的问题

《C语言程序设计》第十一章

指针是一种特殊的变量,它的值是另一个变量的地址,也就是说,它指向了另一个变量的存储位置。通过指针,我们可以间接地访问和修改另一个变量的值,这样可以提高程序的效率和灵活性。指针的类型决定了它指向的变量的类型,以及它所占用的存储空间。例如,int *p; 表示定义了一个指向整型变量的指针变量 p,它在内存中占用 4 个字节(这取决于编译器和操作系统)。

其次,我们要了解指针和数组的关系。数组是一种数据结构,它是由相同类型的元素按照一定的顺序排列而成的集合。数组的每个元素都相当于一个变量,都有自己的地址和值。数组的名字代表了数组的首地址,也就是数组第一个元素的地址。通过数组的名字和下标,我们可以确定和访问数组中的任意一个元素。例如,int a[5]; 表示定义了一个包含 5 个整型元素的数组 a,它在内存中占用 20 个字节(每个元素占 4 个字节)。a[0] 表示数组的第一个元素,它的地址是 a,它的值是 *a。a1 表示数组的第二个元素,它的地址是 a+1,它的值是 *(a+1)。以此类推,a[i] 表示数组的第 i+1 个元素,它的地址是 a+i,它的值是 *(a+i)。

由于数组的每个元素都是一个变量,因此指针变量可以指向数组中的元素,也就是说,我们可以用指针方式访问数组中的元素。例如,int p = a; 表示定义了一个指向整型变量的指针变量 p,并让它指向数组 a 的首地址,也就是 a[0] 的地址。那么,p 的值就是 a,p 的值就是 a[0]。p+1 的值就是 a+1,也就是 a1 的地址,(p+1) 的值就是 a1。以此类推,p+i 的值就是 a+i,也就是 a[i] 的地址,(p+i) 的值就是 a[i]。这样,我们就可以用 p[i] 来表示 a[i],它们是等价的。

对于二维数组,它是由若干个一维数组组成的数组。二维数组的每个元素都是一个一维数组,也有自己的地址和值。二维数组的名字也代表了数组的首地址,也就是数组第一个一维数组的地址。通过二维数组的名字和两个下标,我们可以确定和访问数组中的任意一个一维数组或者一个元素。例如,int a3; 表示定义了一个包含 3 个一维数组的二维数组 a,每个一维数组包含 4 个整型元素,它在内存中占用 48 个字节(每个元素占 4 个字节)。a[0] 表示二维数组的第一个一维数组,它的地址是 a,它的值是 *a。a[0][0] 表示二维数组的第一个一维数组的第一个元素,它的地址是 a,它的值是 **a。a1 表示二维数组的第二个一维数组,它的地址是 a+1,它的值是 *(a+1)。a[1][0] 表示二维数组的第二个一维数组的第一个元素,它的地址是 a+1,它的值是 ((a+1))。以此类推,a[i] 表示二维数组的第 i+1 个一维数组,它的地址是 a+i,它的值是 *(a+i)。a[i][j] 表示二维数组的第 i+1 个一维数组的第 j+1 个元素,它的地址是 *(a+i)+j,它的值是 ((a+i)+j)。

同样,由于二维数组的每个元素都是一个一维数组,因此指针变量也可以指向二维数组中的元素,也就是说,我们也可以用指针方式访问二维数组中的元素。但是,这里要注意指针变量的类型,因为二维数组的元素是一维数组,所以指针变量的类型应该是指向一维数组的指针,也就是行指针。例如,int (p)4 = a; 表示定义了一个指向含有 4 个元素的一维整型数组的指针变量 p,并让它指向二维数组 a 的首地址,也就是 a[0] 的地址。那么,p 的值就是 a,p 的值就是 a[0]。p+1 的值就是 a+1,也就是 a1 的地址,(p+1) 的值就是 a1。以此类推,p+i 的值就是 a+i,也就是 a[i] 的地址,(p+i) 的值就是 a[i]。这样,我们就可以用 p[i] 来表示 a[i],它们是等价的。但是,如果我们想要访问二维数组中的一个元素,而不是一个一维数组,我们就需要再加一个下标。例如,p[0][0] 表示 a[0][0],它的地址是 *p,它的值是 **p。p[1][0] 表示 a[1][0],它的地址是 *(p+1),它的值是 ((p+1))。以此类推,p[i][j] 表示 a[i][j],它的地址是 *(p+i)+j,它的值是 ((p+i)+j)。这样,我们就可以用 p[i][j] 来表示 a[i][j],它们是等价的。

除了行指针,我们还可以用列指针来访问二维数组中的元素。列指针是指向二维数组中的一个元素的指针,而不是一个一维数组的指针。例如,int p = a[0]; 表示定义了一个指向整型变量的指针变量 p,并让它指向二维数组 a 的第一个一维数组的第一个元素的地址,也就是 a[0][0] 的地址。那么,p 的值就是 a[0],p 的值就是 a[0][0]。p+1 的值就是 a[0]+1,也就是 a0 的地址,(p+1) 的值就是 a0。以此类推,p+i 的值就是 a[0]+i,也就是 a[0][i] 的地址,(p+i) 的值就是 a

基于AI的学习




代码行数(新增/累积) 学习时间(新增/累积)
目标 2000行 100小时
第一周 50/50 2/2
第二周 50/50 2/2
第三周 50/50 2/2
第四周 50/50 2/2
第五周 300/300 2/2
第六周 300/300 2/2
第七周 200/200 1/1
第八周 200/200 1/1
第九周 200/200 1/1
第十周 150/150 1/1
第十一周 250/250 1.5/1.5
第十二周 200/200 1.2/1.2

标签:元素,一维,20231313,二维,2024,地址,数组,2023,指针
From: https://www.cnblogs.com/raymongillichmks/p/17901886.html

相关文章

  • 2023-12-14 npm和yarn无法拉取依赖,cnpm可以 ==》切换镜像源
    这两天遇到个问题,是关于依赖无法拉取的问题,尽管我有三分猜到了是什么原因,但我还是不肯往那个方向思考,哎,真是死牛一便颈。如,我要给前端项目装个express框架,用npm装,装了大半天一点反应都没有,用yarn装就直接报网络无法连接,如图: 用cnpm装就没问题,秒过。注意:我的电脑是能正常上网......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第十二周学习总结
    2023-2024-120231320《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第十二周作业)这个作业的目标<自学《C语言程序......
  • 2023-2024-1 20232301 《网络》第六周学习总结
    教材学习内容总结教材学习中的问题和解决过程问题1:对于习题中“如果针对差分你的一个统计查询是否可以无限制的进行重复查询?为什么?”这个问题经思考无果,存在困难问题1解决方案:询问chatgpt,得到了以下答案:在差分隐私(DifferentialPrivacy)的上下文中,无限制地进行重复查询是不可......
  • 2023年度总结
    又到了一年一度的总结时刻。对自己一年的工作做一些复盘和反思。从成败之中汲取经验教训,希望明年能更进一步。首先总结一下今年的一些工作,一月份至二月份主要完成了两件事,去年设计完成的芯片进行Signoff,以及投稿VLSI,中间插了个过年。时间紧任务重,大年夜家人在打牌,我在旁边赶论文......
  • 2023-2024-1学期20232423《网络空间安全导论》第六周学习总结
    教材学习——应用安全基础应用安全概述云计算造成了数据所有权和管理权的分离,在以下两方面开展持续研究:云计算基础设施的可信性、云数据安全保障。工业互联网:形成跨设备、跨系统、跨厂区、跨地区的互联互通,推动整个制造服务体系智能化。数据汇集到云端,要保证系统的可靠运行,......
  • 2023最新初级难度C#面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-初级难度C#面试题合集问:请简单介绍一下C#是什么,以及它的主要特点有哪些?C#是由Microsoft公司开发的一款面向对象的编程语言,它运行于.NETFramework之上,可用于创建各种类型的应用程序,如桌面应用、移动应用、游戏和Web应用等。关于C#的主......
  • 2023最新中级难度C#面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度C#面试题合集问:请描述C#中的垃圾回收如何工作?如何优化垃圾回收的性能?垃圾回收是一种自动内存管理技术,用于识别和释放不再使用的内存块。在C#中,垃圾回收器会定期扫描程序以查找不再使用的对象。一旦找到这些对象,就会标记它们以......
  • 2023 idea 常用插件
    AlibabaJavaCodingGuidelines阿里巴巴代码规范检查插件AiXcoderCodeCompleter代码提示补全插件ArthasIdeaArthas是阿里开源的Java在线诊断工具,该插件可以自动生成Arthas在线Java代码诊断命令AutofillingJavacallarguments代码生成插件。通过快捷......
  • 2023全球开发者生态调研:84%的开发者表示他们在工作中正积极使用生成式AI工具
    今年JetBrains首次在一年一度的开发者生态调研中,增加了人工智能方向的问题。在全球26348名开发者参与的调研中,总体对人工智能的发展持乐观态度。特别是生成式AI在软件开发和编程环节中的应用,84%的开发者表示他们在工作中正在积极使用生成式AI工具。调研中显示,AI文本生成工具比代......
  • 2023-2024-1 20232312 《网络空间安全导论》第六周学习
    2023-2024-120232312《网络空间安全导论》第六周学习教材学习内容总结6.1应用安全概述应用安全情况概述:在各类应用服务系统重,身份认证是保障应用安全的基础,其不仅仅包括传统的人的身份认证、软件等网络实体都需要身份认证和可信管理。不同场景、不同约束条件下都需要采用......