首页 > 其他 > 详细

第十四讲 多维数组学习

时间:2014-04-25 23:55:35      阅读:847      评论:0      收藏:0      [点我收藏+]
    多维数组的汇编跟一维的类似,不过要细心看才能找出规律。还是看代码
    int a[3][3];

    a[0][0]=0;
    a[0][1]=0;
    a[0][1]=0;
   
    a[1][0]=1;
    a[1][1]=1;
    a[1][2]=1;

    a[2][0]=2;
    a[2][1]=2;
    a[2][2]=2;

画图出来是如下:
int a[3][3]

  0 1 2    x
0 0 1 2
1 0 1 2
2 0 1 2

y

由以上图形我们清晰的看出这个int a[3][3] 二维数组,有9个值

看其汇编代码:
0040D700   push        ebp
0040D701   mov         ebp,esp
0040D703   sub         esp,64h
0040D706   push        ebx
0040D707   push        esi
0040D708   push        edi
0040D709   lea         edi,[ebp-64h]
0040D70C   mov         ecx,19h
0040D711   mov         eax,0CCCCCCCCh
0040D716   rep stos    dword ptr [edi]
8:
9:        int a[3][3];
10:
11:       a[0][0]=0;
0040D718   mov         dword ptr [ebp-24h],0
12:       a[0][1]=0;
0040D71F   mov         dword ptr [ebp-20h],0
13:       a[0][2]=0;
0040D726   mov         dword ptr [ebp-1Ch],0
14:
15:       a[1][0]=1;
0040D72D   mov         dword ptr [ebp-18h],1
16:       a[1][1]=1;
0040D734   mov         dword ptr [ebp-14h],1
17:       a[1][2]=1;
0040D73B   mov         dword ptr [ebp-10h],1
18:
19:       a[2][0]=2;
0040D742   mov         dword ptr [ebp-0Ch],2
20:       a[2][1]=2;
0040D749   mov         dword ptr [ebp-8],2
21:       a[2][2]=2;
0040D750   mov         dword ptr [ebp-4],2



由[ebp-64h]可以知道  int a[3][3] 的二维数组占64h-40h=24h,24h===》十进制为36
由于每行占4个字节,那么就有9个EBP,一个EBP是4个字节,那么刚好跟我们前面画的9个数值的个数相同
int a[x][y]的占用字节为
(x*y*4)转化十六进制

因此可以推算出按照 int a[x][y]中的 x,y可以计算int a[x][y] 占( X*y )*4 字节  

又一个问题来了,如何算出 a[1][2]=1; 的偏移地址呢?

大家看一下 Y决定在X的次数,比如Y=3时,X=0时,就有:
    a[0][0]=0;
    a[0][1]=0;
    a[0][1]=0;
三条数据,每一条就是4个字节 
因此就 计算出三维数组a[X][Y]的一个数组a[0][1]的偏移地址就可以这样子写
0*y*4+1*4=4===>十六进制4h  
       a[2][3]
    2*y*4+3*4=8y+12

三维数组
int c[2][3][10]; // 占空间为 2*3*10*4=240 ==》F0h

c[1][0][2]=1;//此处的偏移地址是:f0-(1*3*10*4+0*10*4+2*4)=f0-14=70h

int c[x][y][Z];
c[1][0][2]=1;
        ====>        1*y*z*4+0*Z*4+2*4



 





第十四讲 多维数组学习,布布扣,bubuko.com

第十四讲 多维数组学习

原文:http://www.cnblogs.com/cat168/p/141e54be389e8951876ffed1f891c81f.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!