Структуры с динамическими массивами в Си
Какая есть структура данных, которая позволяет хранить множество элементов разного размера и которую можно реализовать в C? Как мне такое сделать? Вроде как есть связный список, но поискав в интернете, я нашёл только реализации, в которых в элементах хранится только обычный int, а не что-то посложнее
typedef struct
{
uint32_t product_id;
uint32_t user_id;
uint8_t rating;
char* advantages;
char* disadvantages;
char* feedback;
} Comment;
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Есть две разновидности, так сказать, два подхода...
struct Test
{
char *d;
char s[1];
};
После этого вы можете динамически выделять память типа
struct Test ts;
ts.d = malloc(123);
(не забудьте потом ее удалить). А для s
можете выделять иначе:
struct Test * td = malloc(123);
После этого фактически td->s
получается большим массивом, в который вы можете безопасно писать достаточно длинные строки.
strcpy(ts.d, "Hello");
strcpy(td->s,"Dolly");