我正在进行维护项目,我在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]大小的二维声明是否有意义(优化,可读性,......)或者它只是一个遗留代码,我可以安全地更新到一维数组并调整初始化代码?
答案 0 :(得分:2)
我可以想到几个可能的原因:
行维度原来是某个值> 1和更高版本更改为1.更容易保留这样的声明而不是切换到更简单的声明,然后更改代码中引用这些变量的每个点。
某个地方有一个API(可能是外部和/或有问题需要更改),它接受主要维度是动态的2D数组,例如。
void foo(char bar[][FIELD_SIZE], int num_bars);
但是,如果您可以访问引用这些变量的所有地方,并且没有明显的限制,例如上面的(2)那么我就没有看到任何理由不合理化这种用法。