为什么这个简单程序在linux下会出现段错误???

久违的太阳 2010-08-05 07:22:46

#include<stdio.h>

int main()
{
int a[10],n,i,j,sum=0;
printf("enter n:\n");
scanf("%d",&n);
printf("please en %d digitals\n",n);
for(j=0;j<n;j++)
scanf("%d",a[j]);
for(i=0;i<n;i++)
sum+=a[i];
fprintf(stdout,"%d",sum);
}



段错误是什么意思??? 该怎么修改???

还有就是为什么有的程序要使用malloc来申请内存,有的程序不需要malloc来申请内存呢,什么时候该使用malloc???
...全文
104 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bing_bing 2010-08-05
  • 打赏
  • 举报
回复
段错误的原因:http://www.upsdn.net/html/2006-11/775.html
NoneSec 2010-08-05
  • 打赏
  • 举报
回复
一楼回答了第一个问题,我来回答第二把……
malloc是在堆上分配内存,在函数中声明的非static变量是在栈中分配的,在函数结束后就会不能使用了,但是用malloc声明的变量在函数结束后还能继续使用,除非你显示的调用free释放掉……
Mg 2010-08-05
  • 打赏
  • 举报
回复
scanf("%d",a[j]);应该改为
scanf("%d",&a[j]);

69,322

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧