2024-2025-1学号20241309《计算机基础与程序设计》第十二周学习总结
作业信息
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2024-2025-1计算机基础与程序设计第十二周作业 |
这个作业的目标 | |
作业正文 | 2024-2025-1学号20241309《计算机基础与程序设计》第十二周学习总结 |
教材学习内容总结
《C语言程序设计》第十一章:
一、指针与数组的关系
数组名的含义
在 C 语言中,数组名代表数组首元素的地址,它是一个指针常量,意味着其值(所指向的地址)不能被改变。例如,定义int arr[5];,那么arr就相当于指向arr[0]这个首元素的指针。
通过指针访问数组元素
可以定义一个指针变量,让它指向数组,然后利用指针的移动来访问数组中的各个元素。比如定义int p; int arr[5];,通过p = arr;(或者p = &arr[0];)就让指针p指向了数组arr的首元素,之后可以使用(p + i)的形式来访问arr[i]元素,这里利用了指针的算术运算,指针加整数i会根据所指向数据类型的字节大小移动相应的字节数,从而指向后续的数组元素。
二、指向数组的指针变量的定义与使用
定义形式
定义指向数组元素类型的指针变量,如int *p;(对于整型数组而言),它可以用来指向相应类型数组的元素。
赋值操作
可以将数组名赋值给指针变量使其指向数组,也可以通过取地址符获取数组中某个元素的地址赋值给指针,例如p = &arr[2];就让指针p指向了数组arr的第三个元素。
指针的自增自减运算
在指向数组的指针上使用自增(++)、自减(--)操作时,指针会按照所指向元素类型的长度移动到下一个或上一个元素的地址位置,方便顺序遍历数组元素,比如p++;后p就指向了数组中的下一个元素。
三、指针与二维数组
二维数组的地址表示
二维数组在内存中是按行顺序存储的,其数组名代表整个二维数组的首地址(也就是第一行元素的首地址)。可以把二维数组看作是一个一维数组,其每个元素又是一个一维数组(对应二维数组的行)。例如定义int a[3][4];,a、a[0]、&a[0][0]的值是相同的,都表示二维数组首元素(即第一行第一个元素)的地址,但它们的含义在某些运算和使用场景中有细微差别。
指向二维数组元素的指针
可以定义指针变量来指向二维数组的元素,其操作与指向一维数组元素的指针类似,但要考虑二维数组按行存储以及行列的逻辑关系。比如int (p)[4]; p = a;,这里定义了一个指向包含 4 个整型元素的一维数组的指针p,并让它指向二维数组a,之后通过合适的指针运算可以访问二维数组的各个元素,如((p + i) + j)等同于a[i][j]。
四、指针数组
定义与概念
指针数组是一个数组,其每个元素都是指针类型。例如int *p[5];就定义了一个包含 5 个元素的指针数组,每个元素都可以用来指向一个整型变量或者整型数组元素等。
应用场景
常用于处理多个字符串等情况,比如存储多个字符串的首地址,这样可以方便地通过指针数组元素来操作对应的字符串,实现诸如字符串排序等操作,利用了指针数组能够灵活指向不同对象的特点。
五、用指针作为函数参数传递数组
传递一维数组
当把一维数组作为函数参数传递时,实际传递的是数组首元素的地址(也就是一个指针),在函数内部可以通过这个指针来操作对应的数组元素,对数组进行修改等操作,并且函数内部对数组元素的改变会反映到调用函数的地方,因为传递的是地址,操作的是同一块内存区域。
传递二维数组
传递二维数组给函数时,需要指定第二维的大小,函数形参通常采用指针数组或者指向一维数组的指针等形式来接收,以便正确地在函数内部对二维数组元素进行访问和操作。
基于AI的学习
其他(感悟、思考等,可选)
指针数组的应用:中文乘法九九表,数字年份转化为汉字年份,中文加法运算