你好,当我调用函数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++;
}
}
}
}
答案 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
必须初始化为0
。 i
不应大于2
,j
不大于3
,p
不大于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++;
}
}
}
}