我相信我有一个声明不正确。我有一个2D数组和3D数组。我是seg错误,因为我将值0或NULL
分配给其中一个数组。我知道这是试图将地址NULL
分配给无效的指针。赋值给指针2d指针
也许我需要在分配前取消引用数组?如果是这样,我该怎么做?如果不是,我该如何声明数组?
double **WeightIH = calloc(51*20,sizeof(double **));
double ***Input = calloc(51*40, sizeof(double ***));
DeltaWeightIH[i][j] = 0.0 ;
在第一种情况下,使用'sizeof(* WeightIH)'代替或者总是比指针少一个星号'sizeof(double *)'。在这个特殊的设置中,它并不重要,但是如果你有一个类似'double * x;''malloc()'sizeof(double *)'的指针将会是错误的。此外,澄清你的问题,具体。并且不要使用'***'三星指针。你需要什么“* 3D阵列*”? –
您似乎没有声明DeltaWeightIH - 尝试double *** WeightIH = calloc(51 * 20,sizeof(double **)),因为**是作为指针的指针,而***是指向指针的指针指向一个指针,****是一个指向指向指针的指针的指针。 – Nunchy
@iharob我尝试过'sizeof(* WeightIH)',它仍然是seg故障。我需要一个神经网络的3D阵列 –