为什么程序没有以正确的方式执行?

时间:2017-01-12 16:52:38

标签: c++ pointers multidimensional-array

程序没有执行,因为它应该执行。当我输入元素时,它需要超过12个元素,这不应该发生。如果代码中有任何错误,请告诉我。我试图分别输出三个2D阵列。

#include <iostream>
using namespace std;
int main()
{
    int i, j, k;
    int abc[2][2][3]; // three 2D arrays declared .

    for (k = 0; k <= 2; k++) {
        for (i = 0; i <= 1; i++) {
            for (j = 0; j <= 1; j++) {
                cin >> *(*(*(abc + k) + i) + j); // entering the element abc[i][j][k].
            }
        }
    }

    // REQUIRED 3D ARRAY .
    for (k = 0; k <= 2; k++) {
        for (i = 0; i <= 1; i++) {
            for (j = 0; j <= 1; j++) {
                cout << *(*(*(abc + k) + i) + j) << "       ";
            } // respective 2d arrays are printed .
            cout << endl;
        }
        cout << endl;
    }
}

1 个答案:

答案 0 :(得分:1)

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

您在数组之外编制索引,这是未定义的(您最有可能覆盖索引变量)。

3个2x2阵列的数组为abc[3][2][2] - 这对于你的循环来说是正确的。

(当你使用数组时不要使用指针算法,这只会令人困惑。)