一、问题
如何⽤指针表示多维数组?
二、解答
这⾥就是以⼆维数组为例进⾏多维数组的操作演示。
⾸先定义⼀个⼆维数组 int a[3][3] ,数组名代表的是数组的起始地址,因此数组名 a 和第⼀个元素 a[0][0] 的地址是相同的,但是意义却是不同的。 ⼆维数组在逻辑上有⼀个⾏列之分,这⾥我们使⽤如下⼀个程序来看⼀下每⼀⾏的头尾元素的地址情况。代码如下。
#include <stdio.h>
int main()
{int a[3][3];printf("元素a[0][0]和a[0][2]的地址分别是:%d,%d\n", &a[0][0], &a[0][2]);printf("元素a[1][0]和a[1][2]的地址分别是:%d,%d\n", &a[1][0], &a[1][2]);printf("元素a[2][0]和a[2][2]的地址分别是:%d,%d\n", &a[2][0], &a[2][2]);return 0;
}
运⾏结果如图所示。
元素a[0][0]和a[0][2]的地址分别是:1866446020,1866446028
元素a[1][0]和a[1][2]的地址分别是:1866446032,1866446040
元素a[2][0]和a[2][2]的地址分别是:1866446044,1866446052
从上图可以看出,整个⼆维数组是⼀个连续的内存单元,⼆维数组的数组名也是整个数组的⾸地址。因此不难得出,使⽤指针可以指向⼆维数组的⾸地址。
通过上⾯的程序结果,可以将⼆维数组看成⼀个⼀维数组,使⽤指针操作⼆维或多维数组的⽅式与⼀维数组是类似的。
三、总结
我们在学习的时候要注意,很多知识点都是相通的,只要牢固地掌握基本的知识点, 就可以实现对其他扩展知识点的了解。就像习武⼀样,再⾼级精华的招式都是由基本招式组成的,变化的只是顺序和组合。