知识点回顾:
1. C 语言没有真正意义上的二维数组
在 C 语言中,二维数组的实现,只是简单地通过“线性扩展”的方式进行。
如图所示,int b[4][5]; 就是定义 4 个元素,每个元素都是一个包含 5 个整型变量的一维数组。它在内存中依然是以线性的形式存储。
2. 弄清楚下边三个问题:
假设我们定义了二维数组 int array[4][5]:
· array 表示的是什么?
· *(array + 1) 表示的是什么?
· *(*(array+1)+3)表示的是什么?
3. 数组指针和二维数组
要用指针来指向二维数组,需要使用数组指针的形式。
(PS:在 S1E26 会再次探讨该知识点)
见代码:
#include <stdio.h>
int main()
{
int array[2][3] = {{0, 1, 2}, {3, 4, 5}};
int (*p)[3] = array;
printf("**(p+1): %d\n", **(p+1));
printf("**(array+1): %d\n", **(array+1));
printf("array[1][0]: %d\n", array[1][0]);
printf("*(*(p+1)+2): %d\n", *(*(p+1)+2));
printf("*(*(array+1)+2): %d\n", *(*(array+1)+2));
printf("array[1][2]: %d\n", array[1][2]);
return 0;
}




