4.6.1 二维数组的内存映像
(1)一维数组在内存中是连续分布的多个内存单元组成的,而二维数组在内存中也是连续分布的多个内存单元组成的;
(2)从内存角度来看,一维数组和二维数组并没有本质差别;
(3)二维数组int a[2][5] 和一维数组int b[10]其实没有任何本质区别。我们可以把两者的同一单元的对应关系写下来。
(4)既然二维数组都可以用一维数组来表示,那二维数组存在的意义和价值在哪里?明确告诉大家:二维数组a和一维数组b在内存使用效率、访问效率上是完全一样的(或者说差异是忽略不计的)。在某种情况下用二维数组而不用一维数组,原因在于二维数组好理解、代码好写、利于组织。
(5)总结:我们使用二维数组(C语言提供二维数组),并不是必须,而是一种简化编程的方式。想一下,一维数组的出现其实也不是必然的,也是为了简化编程。
4.6.2 哪个是第一维哪个是第二维?
(1)二维数组int a[2][5]中,2是第一维,5是第二维。
(2)结合内存映像来理解二维数组的第一维和第二维的意义。首先第一维是最外面一层的数组,所以int a[2][5]这个数组有2个元素:其中每一个元素又是一个含有5个元素的一维数组(这个数组就是第二维)。
(3)总结:二维数组的第一维是最外部的那一层,第一维本身是个数组,这个数组中存储的元素也是个数组;二维数组的第二维是里面的那一