так что я получил следующие структуры:Как инициализировать массив структуры внутри другой структуры?
typedef struct typeData{
char name[20];
double weightIn;
double weightOut;
}dataType;
typedef struct fifoTable{
unsigned short int start;
unsigned short int end;
dataType data[N];
} fifoTable;
и следующую функцию, которая должна инициализировать структуру:
fifoTable *initFifo(){
fifoTable table;
table.start = 0;
table.start = 0;
dataType data[N];
table.data = data;
return table;
}
Проблемы я сталкиваюсь, что я получаю сообщение об ошибке, говорящее: «назначение к выражению с типом массива ". Я просмотрел его, поэтому решил, что инициализировать массив внутри такой структуры невозможно. Я нашел несколько примеров с массивами char, int и т. Д. Но поскольку в структуре dataType есть другие элементы, я не могу найти способ инициализировать эту таблицу:/Как я могу это сделать?
Спасибо за ваши ответы.
Вы пытаетесь вернуть переменную стека в качестве указателя в код инициализации. Вы должны использовать malloc. –
@ChristopherSchneider: На языке C нет стека. 'table' - автоматическая переменная. Но да, переменная не работает после возвращения, таким образом, любой доступ - UB. Однако это не причина ошибки компилятора. – Olaf
@Olaf Где я могу прочитать об этом? Это первый раз, когда я это слышал. –