四维数组在计算机中是怎么表示的

uusunny 2008-05-03 10:04:49
C语言的环境,有一个四维数组,int cof[4][6][4][4]
在计算机中应该都是以一维的形式保存的吧
想要寻址一个数,比如cof[3][3][3][3]
怎么寻址呢
不明白它距数组首地址的偏移量是怎么算的
谢谢
...全文
926 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lunarfan 2008-05-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Devang 的回复:]
int cof[a][b][c][d];
cof[e][f][g][h]的地址应是:cof + sizeof(int)*e*b*c*d + sizeof(int)*f*c*d + sizeof(int)*g*d +sizeof(int)*h
[/Quote]
这思维挺好
devang 2008-05-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kings_zqz 的回复:]
怎么想象他的存储呢?立方体
[/Quote]

其实就是一维存储的cof[e][f][g][h]也可这样表示:cof[e*b*c*d + f*c*d + g*d + h];
chlaws 2008-05-03
  • 打赏
  • 举报
回复
哎,粗略的画个草图就能明白了,可惜画不了
虽然多维数组在内存中仍然以一维数组形式排列
但为了容易理解,都是把多维数组分解成几行,每行中又有几列的这种形式
int cof[4][6][4][4]
就是4行,每行中有6个元素,每个元素又是一个有4个子元素一维数组,而数组中的每个子元素仍然还是一个有4个子元素数组

cof[3][3][3][3]距离首地址的偏移量是3*6*4*4+3*4*4+3*4+4
devang 2008-05-03
  • 打赏
  • 举报
回复
int cof[a][b][c][d];
cof[e][f][g][h]的地址应是:cof + sizeof(int)*e*b*c*d + sizeof(int)*f*c*d + sizeof(int)*g*d +sizeof(int)*h

kojie_chen 2008-05-03
  • 打赏
  • 举报
回复
怎么想象他的存储呢?立方体
0黄瓜0 2008-05-03
  • 打赏
  • 举报
回复
//以 一个二维数组举例.
int arr[4][5];
arr[2][3]=0;//相当于*((int*)arr + 2*5+3)=0;
0黄瓜0 2008-05-03
  • 打赏
  • 举报
回复
int cof[4][6][4][4] 在计算机中保存形式与一个4*6*4*4大小的一维数组相同.
想要寻址一个数,因为编译器在看到数组的定义时就知道了数组每一维的大小.于是可以计算定位到相对于数组开始处的偏移.

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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