【问题标题】:Significance of array with only one element只有一个元素的数组的意义
【发布时间】:2017-06-08 15:40:32
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 在 C99 中最好使用 flexible array member。在旧的 C 标准中,经常使用一维数组。
  • @GovindParmar 谢谢。你能告诉我如何使用它。我没有做任何动态内存分配
  • @GovindParmar 链接的答案包含一个如何为此类结构调用 malloc 的示例。

标签: c arrays structure


【解决方案1】:

这可能就是所谓的“结构破解”。通过分配一大块内存,数组变成动态的。一个元素只是让它编译的占位符,实际上会有很多浮点数。

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

这样使用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2020-04-07
    • 1970-01-01
    相关资源
    最近更新 更多