该段C语言有什么问题

来源:百度知道 编辑:UC知道 时间:2024/04/29 17:48:56
#include <stdio.h>
void sum(int *a)
{
int i;
for(i=1;i<5;i++);
a[0]+=a[i];
}
main()
{
int a[5]={100,100,100,100,100};
int *pa=a;
sum(pa);
printf("%d",a[0]);
}

for(i=1;i<5;i++); //多了分号

这样一来,由于在for循环里i最终是5.
接下去的a[0]+=a[i]实际上把a[5]的值加到了a[0]上了。a[5]是垃圾值不能加,这就是内存溢出的问题了。

你这个问题属于不仔细,for(i=1;i<5;i++); 这个分号不要,否则a[0]+=a[i];
没有意义了,因为i=5,a[i]值不确定的