为什么"可把二维数组看作是一种特殊的一维数组,即它的元素又是一个数组"?

"例如对于数组a[2][4],可看作是有2个元素的一位数组a[0]和a[1]"

书上的原话,是什么意思?
下一句话是
"每个元素又是一个包含4个元素的一维数组.实际上,可以把n维数组看作是由(n-1)维数组组成的一维数组"
这句话同样求解释

这个问题楼主首先要知道,内存的存储机制是线性的,没有我们想象的那种二维或者三维的,并且数组中实际上仅仅只有以为数组这种数据类型,只不过这数组的元素可以使任意类型,当然包括数组,这样子就构成了多维数组。

你可以看看这张图:

这样子就可以清楚地看出内存存储数据的格式了,当然为什么可把二维数组看作是一种特殊的一维数组也解决啦!!

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-12
二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。如以上定义的a数组,则可视a数组由a[0]、a[1]、a[2]等三个元素组成,而a[0]、a[1]、a[2]等每个元素又分别是由4个整型元素组成的一维数组。可用a[0][0]、a[0][1]等来引用a[0]中的每个元素,其它依次类推。
C语言中,在函数体中或在函数外部定义的一维数组名是一个地址常量,其值为数组第一个元素的地址,此地址的基类型就是数组元素的类型。在以上二维数组中,a[0]、a[1]、a[2]都是一维数组名,同样也代表一个不可变的地址变量,其值依次为二维数组每行第一个元素的地址,其基类型就是数组元素的类型。

二维数组名也是一个地址常量二维数组名同样也是一个存放地址常量的指针,其值为二维数组中第一个元素的地址。以上a数组,数组名a的值与a[0]的值相同,只是其基类型为具有4个整型元素的数组类型。即a+0的值与a[0]的值相同,a+1的值与a[1]的值相同,a+2的值与a[2]的值相同,它们分别表示a数组中第零、第一、第二行的首地址。二维数组名应理解为一个行指针。
相似回答