使用指针访问多维数组元素

问题描述 投票:0回答:1

如何使用指针访问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;
}
c++ pointers multidimensional-array
1个回答
1
投票

引自N1256 6.5.2.1 数组下标

下标运算符[]的定义

E1[E2]
(*((E1)+(E2)))
相同。

由此,我可以说以下所有内容都是等效的:

a[i][j][k]
(*(a + i))[j][k]
(*((*(a + i)) + j))[k]
(*((*((*(a + i)) + j)) + k))

注意:添加的代码是C++,而不是C。对于C++,N3337 5.2.1 下标说:

表达式

E1[E2]
*((E1)+(E2)) 

(根据定义)相同
© www.soinside.com 2019 - 2024. All rights reserved.