多维数组的概念?

hzzkf 2000-08-17 09:57:00
我在数据结构的教程中看见一个关于数组的概念,说可将二维数组的元素看作是一个个的一维数据。一个A23的数组是一个二行三列的概念。我想问一下各位:如果一个三维数组A234,它表示的是一个怎样的概念呢?在c语言中,二维数组的数据是按从左至右,从上至下的顺序存储的,那多维数组呢?
...全文
137 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lty 2000-08-17
  • 打赏
  • 举报
回复
请类比一下空间,一维是长,二维是宽,三维是高,四维是时间,五维呢?。。。
一维:中国三十多省区
二维:每省有地市
三维:地市有区县
四维:区县有乡镇
五维:乡镇有村庄
六维:村庄有家庭。。。。
Larky 2000-08-17
  • 打赏
  • 举报
回复
hyzx2000说的很对就是这么简单,
二维数租就是一个元素是一维数租的一维数租,
三维数租就是一个元素是二维数租的一维数组,或者说是一个元素是一维数租的二维数租!

天啊简直是绕口令!

按照你对A23的定义,A234应该叫做两行三列4层!
U皮特U 2000-08-17
  • 打赏
  • 举报
回复
三维数组可以理解成n个二维数据顺序排列。三维数组A234的排列是按第一个A34二维数组接下来第二个A34二维数组。下面是一个例子可以看得很清楚:

short a[3][3][3];
int i,j,k;
for ( i = 0; i < 3 ; i++ )
{
for ( j = 0 ; j < 3 ; j++ )
{
for ( k = 0 ; k < 3 ; k++ )
{
a[i][j][k] = (short)(i*256 + j*16 + k);
}
}
}
CFile f;
f.Open("c:\\a.log", CFile::modeCreate | CFile::modeWrite );
f.Write((void*)a, 512);
f.Close();

执行完后生成c:\a.log文件,用debug看一下:
debug c:\a.log
0100: 00 00 01 00 02 00 10 00 - 11 00 12 00 20 00 21 00
0110: 22 00 00 01 01 01 02 01 - 10 01 11 01 12 01 20 01
0120: 21 01 22 01 00 02 01 02 - 02 02 10 02 11 02 12 02
0130: 20 02 21 02 22 02
hyzx2000 2000-08-17
  • 打赏
  • 举报
回复
type A[X][Y][Z];//type为数据类型
A[i][j][k]的位置是:第i*(Z*Y)+j*Z+k个(从0开始)。
可以这么考虑:
[Z]是由Z个元素顺次组成,[Y][Z]是由Y个[Z]顺次组成的,[X][Y][Z]是由X个[Y][Z]顺次组成的,以此类推。
哎,现在有点头晕了!

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧