C:如何纠正这个段错误

标签 c arrays segmentation-fault 2d

以下代码显示段错误(我不知道为什么?) 输入在二维数组的范围内

#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]);
    }
}

最佳答案

将数组定义为全局变量,位于 main 之外。全局变量位于数据段,局部变量位于堆栈,所以可能会出现堆栈溢出

关于C:如何纠正这个段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40059143/

相关文章:

c - 为什么使用 while(fgets) 语句后我的 c 指针地址会发生变化?

c++ - 内联函数

c - 如何从 C 代码发出 R 异常信号

PHP 计算另一个数组中存在的数组项数

arrays - 在 Haxe 中通过数组分配变量值?

检查空指针在 C 中不起作用(给出段错误)

c++ - 递归的段错误

c - 在 C 中将所有数字从字符串导入到数组

c - 字符串解析 - 在内存重新分配失败或程序结束后调用 free() 时程序崩溃。

python - 截断后将 Numpy 字符串数组转换为 float