只有一个元素的数组的意义
Significance of array with only one element
我遇到过只有一个元素的数组。这个数组是在一个结构中定义的。是这样的:
typedef struct abc
{
int variable1;
char variable2;
float array[1];
};
我不明白为什么需要这个数组,为什么我们不能只定义一个变量或定义一个指针(考虑数组属性)。
我想使用它。我如何使用这个变量? abc.array[0]
似乎是正确的。不是吗
添加我没有使用任何动态内存分配那么它的意义是什么?
大概就是所谓的"struct hack"吧。通过分配一大块内存,数组变成动态的。 one 元素只是一个使其编译的占位符,实际上会有很多浮点数。
动态数组必须是最后一个元素。
这样使用:
struct abc *ptr = malloc(sizeof(struct abc) + (N-1) * sizeof(float));
ptr->variable1 = N; /* usually store length somewhere in struct*/
我遇到过只有一个元素的数组。这个数组是在一个结构中定义的。是这样的:
typedef struct abc
{
int variable1;
char variable2;
float array[1];
};
我不明白为什么需要这个数组,为什么我们不能只定义一个变量或定义一个指针(考虑数组属性)。
我想使用它。我如何使用这个变量? abc.array[0]
似乎是正确的。不是吗
添加我没有使用任何动态内存分配那么它的意义是什么?
大概就是所谓的"struct hack"吧。通过分配一大块内存,数组变成动态的。 one 元素只是一个使其编译的占位符,实际上会有很多浮点数。
动态数组必须是最后一个元素。
这样使用:
struct abc *ptr = malloc(sizeof(struct abc) + (N-1) * sizeof(float));
ptr->variable1 = N; /* usually store length somewhere in struct*/