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