c ++ 3d数组

时间:2008-12-11 18:52:15

标签: c++ arrays 3d

我正在尝试运行一个3d数组,但是当我运行它时,代码只会在Windows中崩溃,这是我的代码;

#include <iostream>

using namespace std;

int main(){

    int myArray[10][10][10];

    for (int i = 0; i <= 9; ++i){
        for (int t = 0; t <=9; ++t){            
            for (int x = 0; x <= 9; ++t){

                myArray[i][t][x] = i+t+x; 

            }

        }

     }


    for (int i = 0; i <= 9; ++i){
        for (int t = 0; t <=9; ++t){
            for (int x = 0; x <= 9; ++t){

                cout << myArray[i][t][x] << endl;

            }

        }

    }

    system("pause");

}

有人可以给我一个快速解决/解释

2 个答案:

答案 0 :(得分:14)

你有两次行

for (int x = 0; x <= 9; ++t){

当你的意思

for (int x = 0; x <= 9; ++x){

经典的复制粘贴错误。

顺便说一句,如果你在调试器中运行它并查看变量的值,很容易看出发生了什么。

答案 1 :(得分:2)

大卫的回答是正确的。

顺便提一下,惯例是使用i,j和k表示嵌套迭代器索引,并使用&lt; array_length而不是&lt; = array_length -1作为终结符。

如果你这样做,那么你可以使数组大小保持不变并摆脱一些神奇的数字。

此外,在使用数组索引时的断言可能会指向您错误。

结果可能如下:

const std::size_t ARRAY_SIZE = 10;

int myArray[ARRAY_SIZE][ARRAY_SIZE][ARRAY_SIZE];

for (std::size_t i = 0; i < ARRAY_SIZE; ++i) 
{
    for (std::size_t j = 0; j < ARRAY_SIZE; ++j)
    {
        for (std::size_t k = 0; k < ARRAY_SIZE; ++k)
        {
            std::assert (i < ARRAY_SIZE && j < ARRAY_SIZE && k < ARRAY_SIZE);
            // Do stuff
        }
    }
}
寻找你感兴趣的贴纸↓↓↓
豫ICP备18024241号-1