创建大小为1的数组有什么意义?

时间:2014-12-08 14:53:15

标签: c

我已经看到一些创建结构的C代码,并且在结构中有许多数组。其中一些阵列的大小为1。那么为什么还要把它变成一个阵列呢?为什么不只是一个int?

我正在谈论这样的事情:

struct Foo
{

uint8_t Bar[1];
uint32_t BigBar[4];


};

为什么不做到只是

struct Foo
{

uint8_t Bar;
uint32_t BigBar[4];

};

3 个答案:

答案 0 :(得分:3)

答案是这样做有很好的编程习惯,原因有两个:

  1. 如果程序员决定在某个时刻将Bar更改为数组,则代码不会发生很多变化。所有需要做的就是将常数从1更改为ARRAY_SIZE(实际上将常量定义为一个更好)

  2. 使用构造相同的字段比不同的字段更不容易出错。有思想的程序员是犯错误的人:)

  3. 干杯

答案 1 :(得分:1)

我的猜测是更容易返回一个指针:

将指针返回到变量将更容易:Bar

如果你想将它用作指针,你可以传递Bar而不是&Bar如果它是一个int

如果我有一个定义的结构实例:     struct Foo aaa;

你可以定义:

int *pInt = aaaa.Bar;

而不是:

int *pInt = &(aaaa.Bar);

答案 2 :(得分:1)

与其他结构的一致性?

struct alien {
    int heads[3];
    ...
};

struct human {
    int heads[1];
    ...
};