main.cНе устанавливая число в памяти правильно
List L;
Initialize(&L);
printf("%d\n", Size(&L));
list.c
void Initialize (List *L) {
L = malloc(sizeof(List));
if (L == NULL) {
perror("Unable to create memory for list. Exiting.");
exit(1);
}
L->size = 0;
}
int Size (List *L) {
return L->size;
}
То, что я хочу, выводимый бы размер '0', тем не менее, что я получение - это максимальный int sizeof '2673724'. Я немного смущен в этом вопросе, что не так с моим кодом. Глядя с gdb, похоже, что функция Initialize() фактически не изменяет размер List, поскольку она остается прежней до и после ввода функции.
Я сделал что-то не так?
Это работает. Я не работал в C на некоторое время, и последнее, что я сделал, это работать со связанными списками, а не просто списками, поэтому я запутываюсь между ними. Так что мне по существу не нужно было выделять память для этого, чтобы заставить его работать так, как он есть в стеке вместо кучи? – ComputerLocus
В этом случае вам не нужно было выделять память в 'Initialize', потому что она уже была выделена в стеке. – MikeCAT
Ладно, спасибо, я понимаю свою глупую ошибку. Я сбился с толку, когда смотрел мой старый код на реализацию ** связанного ** списка, а не только на список. – ComputerLocus