У меня есть следующая структура
typedef struct _person {
int age;
char sex;
char name[];
}person;
Я сделал базовый поиск в Интернете (но безуспешно) о том, как создать экземпляр и инициализировать структуру с помощью гибкого элемента массива без использования malloc()
.
Например: для обычных структур, таких как
struct a {
int age;
int sex;
};
Мы можем создать экземпляр struct a
и инициализировать его как
struct a p1 = {10, 'm'};
Но для структур с гибким массивом в нем (например, _person
, как упоминалось выше), как мы можем создать экземпляр и инициализировать, как мы делаем это для обычного structures
?
Возможно ли это? Если да, то как мы передаем размер массива во время инициализации и фактическое значение, которое нужно инициализировать?
(или)
Верно ли, что единственный способ создать структуру с помощью гибкого массива - использовать malloc()
, как указано в спецификации C99 - 6.7.2.1 Structure and union specifiers - point #17
?!