【发布时间】:2016-01-21 15:31:52
【问题描述】:
我正在c 中编写一个简单的程序,但我遇到了这个错误
分段错误(核心转储)
我知道Segmentation fault 错误是由于内存访问冲突而发生的。
但我无法弄清楚在下面的简单程序中哪里发生了错误的内存访问。
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", a);
printf("%d\n", a);
return(0);
}
我正在在线编译here,在代码块中它也给出了同样的错误。
【问题讨论】:
-
问题出在scanf,正如其他人指出的那样,但我也不确定返回。
-
@ClaudioCortese
return(0)有效,但没必要,只需return 0即可。 -
@ClaudioCortese 与
int i = (5)有效的方式相同,但你是对的,return不是函数。我的反对意见是int main()签名 ->int main(void) -
@ClaudioCortese,您可能还忽略了
int main()并不意味着main()采用0参数。但相反,这意味着main()采用不确定数量的参数。所以int main(void)真的很重要。因为main()的唯一有效签名是int main(int argc, char *argv[]);和int main(void);。 -
@ClaudioCortese 我明确说
return (0)是有效,但它不是很好的编码风格。
标签: c segmentation-fault runtime-error