Структура должна иметь фиксированный размер, известный во время компиляции. Если вам нужен массив переменной длины, вы должны динамически распределять память.
typedef struct {
int *values;
int numOfValues;
} Queue;
Таким образом, в вашей структуре хранится только указатель. При инициализации структуры вы назначаете указатель на область памяти, выделенную с помощью malloc:
Queue q;
q.numOfValues = 256;
q.values = malloc(256 * sizeof(int));
Не забудьте проверить возвращаемое значение для указателя NULL
и free()
любой динамически выделенной памяти, как только она больше не будет использоваться.