Предполагая, что вы хотите выделить структуру с помощью элемента гибкого массива, а не назначить указатель на массив (что, как говорили другие - вы не можете этого сделать)
Чтобы использовать гибкий элемент массива, вам необходимо выделить структуру плюс объем памяти для массива.
typedef struct s
{
int x[];
}s;
int main()
{
s *some = malloc( sizeof( *some ) + ( 10 * sizeof( int ) ) );
for ( int i = 0; i < 10; i++ )
some->x[i] = i + 10;
return 0;
}
Обратите внимание, что вы не можете оставить sizeof( struct ... )
израспределение - присутствие структуры не гарантируется равным нулю, даже когда элемент гибкого массива является единственным полем в структуре.
Как отметил @chux в комментариях, это будет более согласованно с использованием переменных вместоТипы sizeof()
аргументы:
s *some = malloc( sizeof( *some ) + ( 10 * sizeof( some->x[0] ) ) );