TC上出现abnormal program termination(附代码)

来源:百度知道 编辑:UC知道 时间:2024/06/18 15:06:12
程序如下:
问:
是因为指针要指的空间不足吗?
#include <stdio.h>
main()
{int *p,i=1,s[15];
p=s;
while(p)
{*p=i;i++;p++;
}
for(i=0;i<15;i++)
{
printf("%5d",s[i]); printf("\n");
}

}

楼上说的对了一半。while(p)没有结束循环的合理条件。除非是p增大到用满所有的内存归零后条件才满足,但这时s[15]早就数组越界了。
abnormal program termination大部分情况下都是因为数组越界。
试改为:

main()
{
int s[15],i=0,*p=s;
while(i<15) { *p++ = i++; }
...

while(p)
{*p=i;i++;p++;
}

while语句中的P导致程序进入死循环