间接寻址

Posted guoyujiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了间接寻址相关的知识,希望对你有一定的参考价值。

 

非常简单:

  *(一级地址)

 

二维情况:

 

 1 ...
 2 
 3 int a[3][2]={1,2,2,3,3,4};
 4 
 5 int *p = a[0];//*(p+0)+0,&a[0][0]一级地址 
 6 for(int i=0; i<3; i++)
 7 {
 8     for(int j=0; j<2; j++)
 9         cout<<*(p+i*2+j)<<	;
10         cout<<endl;
11 }
12 
13 ...

 

 

 

三维情况:

...

int b[2][3][4];
//init
for(int i=0; i<2; i++)
    for(int j=0; j<3; j++)
    for(int k=0; k<4; k++)
        b[i][j][k] = i+1;

int *pb = b[0][0];//同*(*(b+0)+0)+0,即&b[0][0][0],pb为一级地址 

//二维打印
for(int i=0; i<2; i++)
{
    for(int j=0; j<3; j++)
        for(int k=0; k<4; k++)
            cout<<*(pb+i*3*4+j*4+k)<<	;
    cout<<endl; 
}

...

 

 

以上是关于间接寻址的主要内容,如果未能解决你的问题,请参考以下文章

在间接寻址中非法使用寄存器

(计算机组成原理)第四章指令系统-第二节2:数据寻址(直接寻址间接寻址立即数)

嵌入式:ARM间接寻址变址寻址与多寄存器寻址

间接寻址和数组

不使用 eval 的间接寻址

基于转换的索引模式到间接寻址模式(x86 汇编)