c ++在3d数组之间传递double值

时间:2015-12-03 16:42:38

标签: c++ arrays

我有两个问题。

首先,我展示了我的代码:

int _tmain(int argc, _TCHAR* argv[])
{
int i = 0;
int j = 0;
int k = 0;

int pom1_1 = 28;
int pom2_1 = 0;
int pom3_1 = 1;

double ***observace_r = new double **[28];
for (int i = 0; i < 28; i++)
{
    observace_r[i] = new double *[40];

    for (int j = 0; j < 40; j++)                    
        observace_r[i][j] = new double [3];     
}

observace_r[pom1_1][pom2_1][pom3_1] = 100;      //THERE IS THE PROBLEM NO.1

double ***dif_observace_ref = new double **[28];
for (int i = 0; i < 28; i++)
{
    dif_observace_ref[i] = new double *[40];

    for (int j = 0; j < 40; j++)                    
        dif_observace_ref[i][j] = new double [3];       
}

dif_observace_ref[i][j][k] = observace_r[pom1_1][pom2_1][pom3_1];  //THERE IS THE PROBLEM NO.2

system("pause");
return 0;
}

我的问题:

第一个:我不知道如何为3d数组的元素赋值。如果我在此代码中尝试它,程序崩溃。但如果我这样写的话:

observace_r[0][0][0] = 100;

程序将被执行。为什么它以这种方式工作?

第二个:如果我在3d数组的两个元素之间传递一个double值,它也会崩溃。为什么我会传递这个值?

感谢所有建议!

1 个答案:

答案 0 :(得分:3)

第一个和第二个问题是,索引28实际上是在数组边界之外,并且您正在尝试取消引用无效指针。

observace_r[pom1_1][pom2_1][pom3_1] = 100; // pom1_1 = 28