这两个数组声明之间有什么区别?

时间:2019-09-27 00:27:51

标签: c arrays for-loop

我想知道这两个数组声明之间的区别,一个这样定义(double array[a][b][c][d]),另一个则不同(double array[a*b*c][d]

double weight4_5[LAYER4][LAYER5][LENGTH_KERNEL][LENGTH_KERNEL];
double weight5_6[LAYER5 * LENGTH_FEATURE5 * LENGTH_FEATURE5][OUTPUT];

如果我想使用for循环将值加载到这两个数组中,该怎么办?

1 个答案:

答案 0 :(得分:1)

第一个是4维数组。

  • 通过weight4_5[i][j][k][l]访问

第二个是2维数组。这是一个扁平数组。

  • 访问基本上是通过weight5_6[x][y]进行的,但是您需要进行一些计算才能基于4D原始数组获得x的值。
  • 您可以根据需要以多种方式组织它(例如,按行,按列等)。一种方法是拥有

    x= ((((i*LAYER5)+j)*LENGTH_FEATURE5)+k)
    y = l;