c - 只有一个元素的数组的意义

标签 c arrays structure

我遇到过一个只有一个元素的数组。该数组在结构内部定义。事情是这样的:

typedef struct abc
{
    int variable1;
    char variable2;
    float array[1];
};

我不明白为什么需要这个数组,为什么我们不能只定义一个变量或定义一个指针(考虑数组属性)。

我想用它。我如何使用这个变量? abc.array[0] 似乎是正确的。不是吗。

加法我没有使用任何动态内存分配那么它的意义是什么?

最佳答案

这可能就是所谓的“struct hack”。通过分配大块内存,数组变得动态。一个元素只是一个占位符以使其编译,实际上会有很多 float 。

动态数组必须是最后一个元素。

像这样使用:

struct abc *ptr = malloc(sizeof(struct abc) + (N-1) * sizeof(float));
ptr->variable1 = N; /* usually store length somewhere in struct*/

关于c - 只有一个元素的数组的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44440107/

相关文章:

c - Windows RPC 编程错误 : LNK 2019 unresolved external symbol RPCServerListen

c - 为什么在编译我的代码 C (linux) 时出现段错误(核心转储)

java - 从数据集中读取并放入对象中

c - 指向结构数组的指针

c - 在 C 中打印一个奇数哈希倒三角形

objective-c - 将 CFStringRef 转换为 C 对应物?

c# - 使用 LINQ 通过一次查询从数组中获取前五个元素和后五个元素

python - 如何将 numpy 矩阵的元素展开为子矩阵

c - 将指向结构的指针的值获取到另一个指向结构的指针

c++ - 对结构数组使用构造函数