Я видел следующий код в проекте я работаю:Последний член в структурах типа T [1] вместо T *
struct Str
{
size_t count;
T data[1];
};
Str* str = (Str*)malloc(sizeof(Str) + sizeof(T) * count);
str->count = count
...
str->data
используется как массив с count
элементами T
с этой точки.
Почему бы не объявить T data[1]
вместо T* data
? Есть ли польза от этого?
Подробнее читайте здесь: http://c-faq.com/struct/structhack.html – StoryTeller
Чтобы инициализировать его пространством для одного элемента? Тем не менее, мне действительно не нравится это делать, когда вы собираетесь изменить размер позже. –
@LordZsolt, но не для изменения размера, но если размер фиксирован, но известен только во время выполнения. Я понимаю, почему он популярен. – StoryTeller