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

作者&投稿:智苑 (若有异议请与网页底部的电邮联系)

可以,二维数组本来就是被看成特殊的一维数组,这个一维数组的长度为原二维数组的行数,原二维数组的每一行是该特殊一维数组的一个元素,但这个特殊一维数组的元素并不是实际存在的元素,它们另有含义,请见下图:

  实际上a[0]和a[1]分别是两个指针,指向a[0][0]和a[1][0],而a是有a[0]和a[1]两个元素的数组名,它指向a[0],也就是说a是一个指向指针的指针,即二级指针。这样就可以利用这个特殊的一维数组进行一次间接访问:*(a[i]+j)。另外a[i][j]是直接访问;*(*(a+i)+j)是二次间接访问。



计算机里的内存是一维的,所以一切都应该是一维的。

二维甚至三维数组,
是人为建立的,便于开发人员理解和思考的数据结构罢了,
其本质还是一维的。

可以。

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

这个问题楼主首先要知道,内存的存储机制是线性的,没有我们想象的那种二维或者三维的,并且数组中实际上仅仅只有以为数组这种数据类型,只不过这数组的元素可以使任意类型,当然包括数组,这样子就构成了多维数组。
你可以看看这张图:
这样子就可以清楚地看出内存存储数据的格式了,当然为什么可把二维数组看作是一种特殊的一维数组也解决啦!!

二维数组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数组中第零、第一、第二行的首地址。二维数组名应理解为一个行指针。

C++2维数组每列长度必须相同吗?
答:这里存在两个语法错误,是不能通过编译的。1,二维数的第二维大小必须是确定的,变量都不行,要常量或常量表达式。2,array是一个关键字。int Array[][5]={{1,2,3},{1,2,3,4,5}};这样可以了。也正如上楼所说,这是2*5个元素的连续2维数组。也可以看成是一个一维的有10元素的1维数。可...

c语言数组的定义
答:3、数组名不能与其它变量名相同。例如:int a;float a[10];是错误的。4、方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0], a[1], a[2], a[3], a[4]。5、不能在方括号中用变量来表示元素的个数,但是可以是符号...

所有数组的维数必须一样是什么意思
答:因此,为了保证数据的一致性和正确性,所有数组的维数必须一样。对于程序员来说,要遵循这个原则,可以在定义数组时指定每个元素的维度数,或者使用现成的数组类库,这些类库会自动保证数组中所有元素的维度数相同。同时,如果在处理数组时发现某个元素的维度数不一致,应该及时进行处理,避免数据的混乱和错误...

二维数组和一维指针数组的区别
答:下面简单了解下二维数组的组成(引用的是《c语言入门经典》的图):从图中可以看出,board作为二维数组是由两层构成的,第一层为纵向数组,第二层为横向数组。 也就是说board是纵向数组的首地址,也就是纵向数组的第一个元素board[0]的地址。这就解释了board的值为什么等于&board[0]的值。而(board...

c语言中*(*(c+1)+1)的意思 c是二维数组
答:从0起算,*(*(c+1)+1)是第1行的第1个元素的值。即若有数组c[3][3]={{1,2,3},{4,5,6},{7,8,9}};,则*(*(c+1)+1)=5,也就是c[1][1]的值。

在vb中,如何理解一维数组和二维数组,举例说明. 谢谢!
答:3 小乔 孙权 周瑜 马超 如果用二维数组来记录这个队伍,那就定义一个3行4列的数组a(3,4)用来记录每个位置上的人的姓名 数组的每个元素代表一个位置,而这个元素的值就是这个位置上的人的姓名,比如 a(1,1)="刘备",a(2,2)=黄忠,a(3,4)=马超。而一维数组可以理解为这个队列只...

...多维数组 和 它到底有什么用 除了一维数组 多维数组我理解不了_百...
答:其实多维数组的一个重要应用是,可以根据多个条件(维数),确定唯一数值。比如:多维数组X(a,b,c,d),确定唯一数值的条件是,a,b,c,d所对应的数字,即当且仅当a=1,b=2,c=3,d=4时X(a,b,c,d)的数值确定为X(1,2,3,4)的值 ...

vb 如何判断一个数组是一维数组还是多维数组? 例如 dim a(3,4)_百 ...
答:系统会根据你的定义来识别:dim a(3)vb自动识别为一维数组,dim a(3,4)vb识别为二维数组 dim a(3,4,5)vb识别为三维数组 二维(包括二维)以上的数组都是多维数组;所以不用担心软件无法识别!

“a[3][4]用来定义数组的维数和各维的大小”怎么说这个数组定义了各维...
答:首先a[3][4]是一个二维数组,他可以看成是一维数组a[3]中的每个元素又是一个有四个元素的一维数组.比如假设:a[0]={1,2,3,4} a[1]={5,6,7,8} a[2]={a,b,c,d} 那么a[3][4]={{1,2,3,4},{5,6,7,8},{a,b,c,d}} 所以a[3][4]就是指一维的大小为3,二维的大...

R语言定义多维数组
答:一组值只有定义了维数向量(dim属性)后才能被看作是数组。比如:z <- 1:1500 dim(z) <- c(3, 5, 100)这时z已经成为了一个维数向量为c(3,5,100)的三维数组。也可以把向量定义为一维数组 ,例如:dim(z) <- 1500 数组元素的排列次序缺省情况下是采用FORTRAN的数组元素次序(按列次序),...