Кто-нибудь знает, есть ли способ инициализировать структуру, содержащую массив переменной длины, без инициализации массива сначала в отдельной переменной (и без использования malloc)?Инициализация структуры с массивом переменной длины в C
Моя структура выглядит следующим образом:
struct my_struct {
int *values;
int size;
}
Сейчас в моем коде у меня есть что:
void my_function (int size) {
int values[size];
struct my_struct mystr = {
.values = values,
.size = size
};
...
}
(массив инициализируется первым, то структура Это работает, но это выглядит неудобно. объявить отдельную переменную для массива.)
Возможно, это будет работать:
void my_function (int size) {
struct my_struct mystr = {
.values = calloc (size, sizeof (int)),
.size = size
};
...
}
(но я не хочу использовать mallocs)
Но то, что я хотел бы написать что-то вроде:
void my_function (int size) {
struct my_struct mystr = {
.values = (int[size]){},
.size = size
};
...
}
Любая идея?
Вы хотите иметь массив без выделения пространства для него? – GMichael
Я знаю, что мне нужно выделить пространство для массива, но я хотел бы сделать это без использования промежуточной переменной, такой как 'int values [size];'. – FClad
Что не так с '.values = calloc (size, sizeof (int)),'? – GMichael