我创建了一个二维动态分配的数组。然后我想输出插槽的地址,因此我可以真正看到它不是连续的内存块。我已经设法通过&tda[i][j]
语句来做到这一点。但是,我想知道如何通过使用与*(tda+1)
相同的类似&tda[1][0]
的方法来做到这一点。例如,如何使用tda[1][1]
的组合输出*(tda+1)
地址。
#include <iostream>
using namespace std;
int main() {
int **tda;
tda = new int*[2];
cout << tda << endl;
cout << tda+1 << endl;
for (int i=0; i<2; i++) {
tda[i] = new int[2];
}
cout << *(tda+1) << endl;
cout << endl << "Proof that the block of memory is not contiguous:" << endl;
for (int i=0; i<2; i++) {
for (int j=0; j<2; j++) {
cout << &tda[i][j] << endl;
}
}
return 0;
}
最佳答案
好了,您已经提到了a[k]
和*(a + k)
的等效性,但是让我为您说明一下:
&tda[i][j]
是
&*(tda[i] + j)
是
*(tda + i) + j
类似地,
tda[i][j]
变成
*(*(tda + i) + j)