标题:各位师兄,二维数组到底是什么一回事
只看楼主
暴君Dentiny
Rank: 2
等 级:论坛游民
帖 子:132
专家分:43
注 册:2019-5-6
结帖率:89.47%
已结贴  问题点数:3 回复次数:3 
各位师兄,二维数组到底是什么一回事
我查了一下谭浩强的c程序设计根本没有这个的解释
在,C primer plus6中文里面解释的也不详细,有谁有好的理解欢迎评论
搜索更多相关主题的帖子: 二维数组 谭浩强 程序设计 中文 欢迎 
2019-08-24 13:59
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
得分:1 
C Primer Plus 中文版,第10章你得整章看完。
2019-08-24 14:36
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:1 
二维数组定义的一般形式是:
dataType arrayName[length1][length2];
其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。

我们可以将二维数组看做一个 Excel 表格,有行有列,length1 表示行数,length2 表示列数,要在二维数组中定位某个元素,必须同时指明行和列。例如:
int a[3][4];
定义了一个 3 行 4 列的二维数组,共有 3×4=12 个元素,数组名为 a,即:
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]
如果想表示第 2 行第 1 列的元素,应该写作 a[2][1]。

也可以将二维数组看成一个坐标系,有 x 轴和 y 轴,要想在一个平面中确定一个点,必须同时知道 x 轴和 y 轴。

二维数组在概念上是二维的,但在内存中是连续存放的;换句话说,二维数组的各个元素是相互挨着的,彼此之间没有缝隙。那么,如何在线性内存中存放二维数组呢?有两种方式:
一种是按行排列, 即放完一行之后再放入第二行;
另一种是按列排列, 即放完一列之后再放入第二列。

在C语言中,二维数组是按行排列的。也就是先存放 a[0] 行,再存放 a[1] 行,最后存放 a[2] 行;每行中的 4 个元素也是依次存放。数组 a 为 int 类型,每个元素占用 4 个字节,整个数组共占用 4×(3×4)=48 个字节。
2019-08-24 14:39
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
得分:1 
对于2维数组来讲,可以理解成数组的数组。

比如:
int a[8][4]
a是数组首元素的地址,那么作为2维数组来讲,数组首元素是什么呢?
2维数组的首元素还是个数组-----一个包含4个int的一维数组。


对于这个包含4个int的一维数组来讲,其数组名为a[0],首元素地址为a[0],
也即a[0]和a都是个地址,而且数值相同,但他们意义不同,一个是一维数组的首元素地址,一个是二维数组首元素的地址。


 *a代表其首元素的值,其首元素为a[0],而a[0]又是个地址,值为
&a[0][0] ,即*a就是&a[0][0],进行取值运算,**a就是*&a[0][0],即
**a就是a[0][0],所以说,a是地址的地址。*a虽然是元素,但他还是个地址。

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2019-08-24 15:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496545-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072186 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved