一维维度为[1]的二维数组

时间:2014-10-02 14:00:24

标签: c multidimensional-array

我正在进行维护项目,我在C源文件中找到了这个数组声明:

char vectorFields [1][FIELD_SIZE];
char vectorValues [1][VALUE_SIZE];

初始化为:

strcpy(vectorFields [0], field); // where char field[128]
strcpy(vectorValues [0], vals);  // where char vals[128]

这个具有一个[1]大小的二维声明是否有意义(优化,可读性,......)或者它只是一个遗留代码,我可以安全地更新到一维数组并调整初始化代码?

1 个答案:

答案 0 :(得分:2)

我可以想到几个可能的原因:

  1. 行维度原来是某个值> 1和更高版本更改为1.更容易保留这样的声明而不是切换到更简单的声明,然后更改代码中引用这些变量的每个点。

  2. 某个地方有一个API(可能是外部和/或有问题需要更改),它接受主要维度是动态的2D数组,例如。

    void foo(char bar[][FIELD_SIZE], int num_bars);

  3. 但是,如果您可以访问引用这些变量的所有地方,并且没有明显的限制,例如上面的(2)那么我就没有看到任何理由不合理化这种用法。