二维数组中元素的地址

时间:2015-06-26 15:59:51

标签: c++ arrays pointers

for(i = 0; i < n; i++) {
    for(j = 0; j < n; j++) {
        printf("%u ",(*(a+i)+j));
    }
    cout<<endl;
}

假设声明了2-d数组a,(*(a+i)+j)如何给出每个元素的地址?我不理解这个概念。通常*(a+i)应该在(a+i)位置提供值?

2 个答案:

答案 0 :(得分:2)

这是Row Major排序的情况,其中二维数组以行方式存储 假设索引从0开始,要访问数组中的任何元素,比如A [i] [j],我们必须首先跨越“i”行数然后“j”列数。

由于'a'是数组的基地址,*(a + i)给出了i行之后的内存中的位置,即第i行并向其添加j将指针指向第i行的第j列给出A [i] [j]的地址。

答案 1 :(得分:1)

是*(a + i)给出该位置的值,该值是指向第i行开头的指针,+ j是指针从行的开头到第i行的第j个元素。

所以我正在处理行,j正在处理列。

因此(*(a + i)+ j)给出每个元素的地址。希望这清楚。