在C中分配给一个数组

时间:2016-12-18 13:05:24

标签: c arrays for-loop

为什么这个代码不起作用,什么是解决方案?

在代码中我提到的函数中,我试图将该函数生成的所有值分配给一个数组,用 int o 创建一个更简单的循环形式。 (因为从数组的开始分配开始,可以使用上面的循环中的非循环)

程序崩溃。

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


int main()
{

int i;
int s;
int o;
int n;
n=20;
long int arr[n];
long int arr2[n];



for(i=0; i<n; i++){
    arr[i]=(i+1)*6;

}

//this function seems to do problems
o=0;
for(i=0; i<n-1; i++){
    for(s=1; s<n-i-1; s++){
        arr2[o]=arr[i+s]-arr[i]; o++;
    }
}




    return 0;
}

1 个答案:

答案 0 :(得分:3)

由于这条线而崩溃:

 arr2[o]=arr[i+s]-arr[i]; o++;

特别是o++部分。你在一个嵌套循环中调用它,所以o++将被调用超过n次,从而溢出为它分配的缓冲区。

在此示例中,

o达到171 - 因此您需要使arr2足够大,或者(更有可能)将o++移动到外循环。