编译过程中分段错误的可能原因

时间:2019-03-17 14:13:14

标签: c segmentation-fault

问题:

我的程序正在运行,但没有成功。返回分段错误。可能出什么问题或如何解决此问题?

代码:

#include<stdio.h>
#include<stdlib.h>
int main ()
{
  int *arr, i, j, n;
  printf ("Input the Size");
  scanf ("%d", n);
  arr=(int*)malloc(n*sizeof(int));
  for (i = 0; i < n, i++;)
  {
    *(arr + i) = i;
  }
  for (i = 0; i < n, i++;)
  {
    printf ("%d\n", *(arr + i));
  }
return 0;
}

1 个答案:

答案 0 :(得分:1)

更改此:

scanf ("%d", n);

对此:

scanf ("%d", &n);

因为scanf( const char * format, ...)需要一个指针作为其参数。


此外,请更改以下内容:

for (i = 0; i < n, i++;)

对此:

for (i = 0; i < n; i++)

因为通常的for循环语法是:

  

for(init; condition;增量)

与第二个for循环相同:for (i = 0; i < n, i++;),应为for (i = 0; i < n; i++)


您可以通过传递启用编译的标志(例如,用于GCC的Wall(这样的编译:{{1​​}})来允许编译器对此发出警告。然后您将收到以下警告:

gcc prog.c -Wall