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

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

时间:2024-12-15 22:31:59浏览次数:5  
标签:arr 元素 陈烨南 指向 int 20241408 2024 数组 指针

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

标签:arr,元素,陈烨南,指向,int,20241408,2024,数组,指针
From: https://www.cnblogs.com/chenyenai/p/18608837

相关文章

  • 西北工业大学《2024年821自动控制原理真题》 (完整版)
    本文内容,全部选自自动化考研联盟的:《西北工业大学821自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~目录2024年真题Part1:2024年完整版真题2024年真题......
  • 2024.11.19 第一次讲座
    讲座的课后反思:提升数字素养今天听了来自青浦区的教研员张杨旭老师的讲座,收获和思考颇丰。张老师分享了在数字时代和人工智能背景下,教育者应具备的数字素养,以及如何利用这些技术改进教学方法。通过四个案例,分别展示了历史、思政、探究和信息四门课程的数字化应用,强调了个性化教......
  • Diary - 2024.12.15
    堂堂复活!!!今天是thupc初赛!!!10题,感觉打的有点倒闭,问了问上届参赛的说有希望。这下要靠狗运了,我想去北京玩!!!!!感觉我就是全队最摆的,就写了几个简单题。剩下的我是纯口胡,代码全给队友了,怎么会是呢。前天对昨天的幻想:做完补课的作业,然后开始复健oi,赢!实际的昨天:20:04(qq)我:......
  • 2024.11.26 第二次讲座
    讲座课后反思:数字赋能教学今天这节讲座围绕数字赋能教学展开,老师通过十几个具体的案例为我们分析了数字技术在精准教学、课堂管理、个性化学习等方面的应用。通过英语和数学课后作业布置的案例,展示了数据如何帮助教师直观了解学生的学习情况,实现精准辅导。还为我们讲解了数据能......
  • 2024/12/15
    https://mp.weixin.qq.com/s/7op7tIlFH90fcLYYe6SA4w选择操作:轮盘赌方法正交实验1.为什么同样的cpp文件,用visualstudiocode软件打开的时候,中文注释会乱码,但是用dev-C++确能正确显示?中文注释在VisualStudioCode(VSCode)中显示乱码,而在Dev-C++中显示正常,可能与文件的字符......
  • 2024-2025 20241312计算机基础与程序设计》第十二周学习总结
    学期(如2024-2025-1)学号(:20241312)《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第十二周作业)这个作业的目标加......
  • # 2024-2025-1 20241325 《计算机基础与程序设计》第12周学习总结
    2024-2025-1学号20241325《计算机基础与程序设计》第12周学习总结作业信息|这个作业属于https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP||-- |-- ||这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12|这个作业的目标|<加入云班课,参考......
  • HZCU 2024软件工程|第八组 智能编程测评系统
    一、背景随着编程技术的不断普及,越来越多的编程爱好者加入到软件开发的行列中。然而,编程本身的复杂性和高门槛,尤其是对于缺乏系统学习经验的编程爱好者来说,往往成为他们在学习和实践过程中面临的主要挑战。在这样的背景下,智能编程系统应运而生,旨在为编程爱好者提供一个测评平台,帮......
  • 题解:(A)[EPXLQ2024 fall round] 风吹起了从前
    (A)[EPXLQ2024fallround]风吹起了从前题意给定\(n\)个字符串\(a_1\)到\(a_n\)。第\(i\)个字符串拥有一个深度值\(r_i\),有一个价值\(v_i\)。再给你\(m\)次询问,每次给出一个字符串\(t\)和深度\(d\),求以\(t\)为前缀且深度值小于\(d\)的字符串价值之和。Soluio......
  • 题解:P11389 [COCI 2024/2025 #1] 等级 / Hijerarhija
    思路因为一棵树的本质是一个图,所以我们可以认为入度为\(0\)的节点就是这个树的根。所以我们统计有几个根,以及是已经作为根的。最后去统计有多少个根就行了。存储父子关系可以用unordered_map。代码#include<iostream>#include<cstdio>#include<cstring>#include<algori......