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)
位置提供值?
答案 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)给出每个元素的地址。希望这清楚。