在C中迭代时,2D数组突然变得未定义

在C中迭代时,2D数组突然变得未定义,c,arrays,C,Arrays,我有一个全局2D数组,并遍历如下值(MAXV=100,在graph.h中定义): #包括“graph.h” 整数邻接_数组[MAXV][MAXV]; 操纵(图*g){ int m,n; 对于(m=1;m n证书;m++){ 对于(n=1;n个实体;n++){ 如果(m!=n){ if(邻接数组[n][m]!=1){ } } } } 我只关心索引1-6,而不是0或>6。在这种情况下,g->nvertices是6。在迭代2D数组时,我在if(邻接数组[n][m]!=1)处得到一个seg.fault

我有一个全局2D数组,并遍历如下值(MAXV=100,在graph.h中定义):

#包括“graph.h”
整数邻接_数组[MAXV][MAXV];
操纵(图*g){
int m,n;
对于(m=1;m n证书;m++){
对于(n=1;n个实体;n++){
如果(m!=n){
if(邻接数组[n][m]!=1){
}
}
}
}
我只关心索引1-6,而不是0或>6。在这种情况下,
g->nvertices
是6。在迭代2D数组时,我在
if(邻接数组[n][m]!=1)处得到一个seg.fault
。它在m=4和n=3时出现seg.fault的具体情况。检查数组的任何值都会在该点出现seg.fault,因此我不知道这些值是否是问题。如果我提供的内容不清楚,我很抱歉,如果需要,我将尝试澄清。

考虑到您的假设(
MAXV==100
g->nvertices==6
)您的代码不应该出现错误,因为您的假设是错误的

最有可能的解释是您传递的指针g未正确初始化,或者不是图形指针。
在这种情况下,访问
g->nEnterties
可能导致seg故障,或者在访问
邻接数组[n][m]
时返回的值等于或大于
MAXV
可能导致seg故障
在调试模式下,用大量数字填充内存


您是否尝试过使用调试器运行或打印
MAXV
g->nVerices
的值?

信息不足。
邻接数组[3][4]
是有效的,给定
MAXV=100
。我在代码中看到的唯一可能导致seg错误的东西是参数
g
中的无效指针。在C中,任何数组都由0…max-1引用。g->nvertices的值是多少?在“m”文件中,最大值是否应该是g->mvertices而不是g->nvertices?要获得良好的帮助,请发布
#include "graph.h"

int adjacency_array[MAXV][MAXV];

manipulate(graph *g){
    int m,n;
    for (m = 1; m <= g->nvertices; m++){
        for (n = 1; n <= g->nvertices; n++){
            if (m != n){
                if (adjacency_array[n][m] != 1){
                }
            }
        }
    }