上篇我们讲到了一维数组传参和冒泡排序,本篇我们继续精进指针数组,本篇要讲的是:
1.二级指针
在讲二级指针之前,我们得知道既然有二级指针,那必然存在一级指针,那么什么是一级指针呢?我先来举个例子:
如上图所示,int* p = &a是指针最简单的用法,这种用法我们称为一级指针,其实就是指针变量接收了一个变量的地址。
那什么是二级指针呢?
如代码所示 int * * pp = &p 即二级指针,因为这个int * * pp拆分开来有不同的意思。以一级指针为例子:int * p = &a 是一级指针,p接收了a的地址,然后int * * pp = &p就是把p的地址交给了pp,而中间的两个 * ,第一个是和int一起解读的,即*pp变量的类型为int * ,第二个 * 说明的是pp是指针变量。而他的格式其实和一级指针很像,实际上就是另一种形式的嵌套。
2.指针数组模拟二维数组
首先是指针数组的概念我们必须了解一下,众所周知数组可以分为整形数组,字符数组......而整形数组的含义是:存放整形的数组。字符函数的含义是:存放字符的数组。以此类推:指针数组即存放指针的数组。既然数组可以存放指针,那么二级指针的作用在二维数组就体现出来了。
既然理解了指针数组的概念,我们就要来进行实际应用:
这是一个简单的指针数组模拟二维数组,从结果上来看确实是达成了二维数组的效果,但是这个指针数组却不是真正意义上的二维数组。可以看到我是arr1 arr2 arr3 三个数组的地址全部递给了指针数组* arr,正常来讲应该是从左到右打印所有数字,所以在模拟实现的时候我在for循环内加上了printf("\n"),让其打印完第一个数组的数字的时候换行进行打印,如此往复循环就模拟实现了二维数组。
这就是本篇要讲的所有内容,希望能对你们能够有所帮助,我们下篇见。