C 语言没有真正意义上的二维数组
在 C 语言中,二维数组的实现,只是简单地通过“线性扩展”的方式进行。
如图所示,int b[4][5]; 就是定义 4 个元素,每个元素都是一个包含 5 个整型变量的一维数组。它在内存中依然是以线性的形式存储。
弄清楚下边三个问题:
假设我们定义了二维数组 int array[4][5]:
array 表示的是什么?
*(array + 1) 表示的是什么?
((array+1)+3)表示的是什么?
array是数组名,是一个地址信息,指向什么?指向二维数组第一个元素,二维数组第一个元素是什么?第一行的数组array[0]。也就是*array==array[0]。(第一行数组就是指向这第一行数组第一个元素的地址,所以array[0]=&array[0][0])