0
下面的代码显示段错误(?我不知道为什么) 输入是二维数组的限度内C:如何解决这个段错误
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int ar[10000][10000],n,m,i,j;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
ar[i][j]=0;
}
}
for(i=1;i<=n;i++)
{
scanf("%d",&ar[1][i]);
}
for(i=2;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(j!=n)
{
ar[i][j]=ar[i-1][j]^ar[i-1][j+1];
}
else
{
ar[i][j]=ar[i-1][j]^ar[i-1][1];
}
}
}
for(i=1;i<=n;i++)
{
printf("%d ",ar[m-1][i]);
}
}
您正在堆栈上创建一个100M阵列? – stark
你正在栈上创建一个'10000 * 10000'' int'数组,这就是为什么。在堆上使用'malloc'创建这个数组,你可能不会再有这个段错误了。 –
你的循环是错误的。 C中的数组从零到'n-1'。所以你的循环应该是'for(i = 0; i