【发布时间】:2017-05-16 05:14:26
【问题描述】:
这是代码。为什么我会遇到这个错误,我应该参考什么信息来源来纠正这些错误,以便我知道'如果我这样做,我会得到'x'错误'
#include<stdio.h>
void main()
{
int i,avg,sum;
int marks[30]; // Array declaration
for(i=0;i<31;i++)
{
printf("Enter Marks:");
scanf("%d",&marks[i]); // Stores data in Array
}
for(i=0;i<31;i++)
sum=sum+marks[i];
avg=sum/30;
printf("Average marks of student \t %d",avg);
}
【问题讨论】:
-
for(i=0;i<31;i++)-->for(i=0;i<30;i++) -
int marks[30]定义了一个大小为 30(0..29 个索引)的数组,但在您的for loops中,您正在访问不存在的标记 [30]。 -
要添加到@MohammadH.Mofrad 的答案,当您写入标记[30] 时,您将写入程序不拥有的内存。并且程序崩溃了。有关更多信息,请参阅stackoverflow.com/questions/1345670/stack-smashing-detected