因此,我试图全局声明一个 3 维整数数组,以便两个单独的函数可以使用它。
最初,我尝试过这个(solns
作为 3D 数组的名称):
static int*** solns;
但是,虽然三重指针solns
确实在函数之间存在,但我放置在其中的信息却没有。当第二个函数尝试访问第一个函数放入的数据时,这给了我一个段错误solns
。
我应该如何声明这样才能保留里面的信息?我试过了
static int solns[][][];
除其他外,但 gcc 不喜欢我尝试的其他任何东西。
编辑:函数 1 中的这段代码将数据放入数组中:
solns[k] = realloc(solns[k],sizeof(solns[k])/sizeof(int*)+sizeof(int*));
solns[k][l] = realloc(solns[k][l],sizeof(int)*4*sC);
for(i=0;i<sC*4;i++)
{
solns[k][l][i] = row[i];
}
l++;
这个片段是函数 2 尝试读取该数据的地方:
if(solns[i][j][m*4+1]!=solns[i+1][n][m*4+2])
break;
但是solns[i]
此时是一个空指针,因为指向的数据solns
不会结转。