我正在尝试使用以下代码将1 / k ^ 2的总和存储在数组中:
$(shell ...)
我收到“分段错误”错误。为什么会这样?我怎么能避免它?
我在C编程
答案 0 :(得分:3)
n
在double 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;段错误