这一章,我们将通过指针与数组、函数结合。
通过指针引用数组
在c语言中,数组名代表数组中首个元素的地址,下面就通过这个列子来看看
指针增量与数组的关系:指针的偏移就像是一个游标卡尺一样
通过指针引用数组元素:有两种方法:1.下标法 2.指针法
上面这个例子有一些见怪不怪的用法:1.指针当做数组名,下标法访问
2.数组名拿来加
练习1:函数封装数组初始化,遍历
练习2:将数组中的n个元素逆序存放
指针和二维数组
二维数组中上官特有说法:父子数组,为了研究清楚地址的概念,把二维回归到一维数组。
二维数组本质还是数组,跟一维数组不同点是二维数组的元素还是个数组(子数组)
int a [3][4] 中 a是父数组 a[0] a[1] a[2] 是子数组
其中: a表示的是父数组的地址
a[0] *a表示的是子数组的地址
arry偏移1后地址增加了16个字节,说明偏移了4个元素的地址,说明是arry+1是从a[0]偏移到了a[1]。
下面这张图就可以辅助我们更好的理解了
树立一下认知:
小总结:笔试题会考
数组指针 : 写法 int (*p)[n] n代表有多少列
例子:输出二维数组任意行列的数
函数指针
定义:如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。 //函数名就是地址
函数指针的调用跟变量一样,都是先定义一个函数指针变量,再指向这个函数,然后调用
它的好用之处是根据程序运行过程 的不同情况,调用不同的函数,下面通过这个例子来看看吧
有两个整数a,b ,由用户输入1/2/3。如果输入1,程序就输出a,b中的大值,如果输入2,程序就输出a,b中的小值,如果输入3,程序就输出a,b的和。
指针数组 int * p[4]
定义:一个数组,若其元素都是指针类型数据,称为指针数组。也就是说,指针数组中的每一个元素都存放一个地址,相当于一个指针变量。
函数指针数组 :是数组,数组中的每一项都是一个指针变量
指针函数 int * a(int x, int y)
概念:
例:有a名学生,每名学生有b门成绩,要求用户输入序号,就能输出对应的成绩,用指针函数来实现。
二级指针: 是一个指针变量,指向一个一级指针,并保存该一级指针的地址;
这个例子中我们可以用一级指针来存放指针变量的地址,但是使用有缺陷,无法获得最终地址的内容,所以这个时候我们就可以使用二级指针了,接下来看看这个例子。
:
接下来就是对整个指针部分的总结了:
指针部分到此结束,如果文章有错误的地方请各位大佬斧正!!!