【发布时间】:2015-10-18 12:12:33
【问题描述】:
假设我们有一个二维数组a[n][m]。我可以使用*(*a + i * n + j) 而不是a[i][j]。
如何使用指针访问 N 维数组的元素?即我可以用什么来代替a[i][j]...[k]?
例如,我尝试执行以下操作,但这不起作用:
#include<iostream>
#include<conio.h>
using namespace std;
int main() {
const int n1 = 5, n2 = 5, n3 = 5;
int array[n1][n2][n3];
for (int i = 0; i < n1; i++)
for (int j = 0; j < n2; j++)
for (int k = 0; k < n3; k++)
array[i][j][k] = n1*n2*n3;
cout << array[1][2][4]<<endl;
cout << *(*array + n1 + n2 * 2 + 4);
_getch();
return 0;
}
【问题讨论】:
-
你能把你的代码贴在这里吗?
-
不会
*(*a + i * n + j)导致i > 0的未定义行为?
标签: c++ pointers multidimensional-array