C [1]处一维的二维数组

C [1]处一维的二维数组,c,multidimensional-array,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]的二维声明是否有意义(优化、可读性等),

我正在进行一个维护项目,在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,后来更改为1。这样保留声明比切换到更简单的声明,然后更改代码中引用这些变量的每个点更容易

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

    void foo(字符条[][字段大小],整数条)


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

    Paul您是对的:在另一个应用复制粘贴编码方法的地方(遗憾的是,在这个项目中经常使用这种糟糕的做法)我发现可能是复制的源代码,其中行确实大于1。@Zac:不幸的是,这在任何有任何历史的代码库中都太常见了——即使大多数从事代码工作的人都是称职的,但总有“那个家伙”在公司任职期间(在他被提升到管理职位之前;-)污染了代码。