执行函数时C程序崩溃

时间:2014-04-06 09:03:17

标签: c arrays

你好,当我调用函数arrayBigToSmall程序崩溃时(我输入数字后),我遇到了问题。我想了解为什么会发生这种情况以及如何解决这个问题。?

代码 -

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    float array[2][3][2];
    getNums(array);
    return(0);
    }

    void getNums(float array[2][3][2])
    {
    int i,j,p;

    printf("Enter numbers: \n");
    for(i = 0; i < 2 ; i++)
    {
        for(j = 0; j < 3; j++)
        {
            for(p = 0; p < 2; p++)
            {
                scanf("%f",&array[i][j][p]);
            }
        }
    }
    arrayBigToSmall(array);
    }

    void arrayBigToSmall(float array[2][3][2])
    {

    int i,j,p,k;
    float array1[12];
    float temp;

    for( i=0; i<3; i++)
    {
        for( j=0; j  < 2; j++)
        {
            for(p = 0; p < 3; p++)
            {
                array1[k] = array[i][j][p];
                k++;
            }
        }
    }
    }

2 个答案:

答案 0 :(得分:4)

for( i=0; i<3; i++)
{
    for( j=0; j  < 2; j++)
    {
        for(p = 0; p < 3; p++)
        {
            array1[k] = array[i][j][p];
            k++;
        }
    }
}
}

k必须初始化为0i不应大于2j不大于3p不大于2

答案 1 :(得分:2)

小心使用以下数组: 因为数组的维度为2 x 3 x 2,但在您的代码中,您使用3 x 2 x 3方式的3个循环溢出并导致崩溃。 此外,您应该在使用前初始化k

void arrayBigToSmall(float array[2][3][2])
{

int i,j,p,k=0;
float array1[12];
float temp;

for( i=0; i<2; i++)
{
    for( j=0; j  < 3; j++)
    {
        for(p = 0; p <2 ; p++)
        {
            array1[k] = array[i][j][p];
            k++;
        }
    }
}
}