解决C中的分段错误错误

时间:2018-02-26 13:13:04

标签: c segmentation-fault

我正在尝试使用以下代码将1 / k ^ 2的总和存储在数组中:

$(shell ...)

我收到“分段错误”错误。为什么会这样?我怎么能避免它?

我在C编程

2 个答案:

答案 0 :(得分:3)

ndouble terms[n];中是垃圾导致未定义的行为。通过使用gcc -Wall进行编译来启用编译器警告并观察。永远不要忽视警告。

在声明n OR

之前初始化terms[n]
printf(" Introduce n\n");
scanf("%d", &n);
double terms[n];

同样e未初始化,初始化它。

 e = 0 ;
 while (e < n){
  /* code */
 }

答案 1 :(得分:2)

当声明具有n元素(double terms[n];)的数组时,所述数组的分配在编译阶段完成。因为您的n变量未经初始化,所以它具有不确定的值(从用户角度来看是随机的),因此您不知道所述数组的大小。

稍后将int扫描到n,完全没有任何帮助,因为它在运行时完成(并且还完成 AFTER 数组声明如果您使用malloc进行分配 AFTER scanf),它可能会有效。

无论如何,你现在有一个数组&#34;随机&#34;大小,并访问它是未定义的行为 - &gt;段错误