Я немного искал и не могу найти точного ответа на свой вопрос.Кажется, что это должно работать, но это не так.Вот мой код:
typedef struct stack_strut {
Item* top;
int size;
}stack;
void initialize(stack* s) {
s = (stack*)malloc(sizeof(stack));
s->size = 0;
}
int main() {
stack s;
initialize(&s);
return 0;
}
Это сжатая версия, очевидно.У меня сложилось впечатление, что я смогу изменить содержимое структуры, так как я передаю указатель на нее, поэтому изменение внутри функции должно остаться после его возврата.Если я использую оператор print внутри функции initialize для проверки размера, он успешно печатает 0. Однако, если я использую другой оператор print в main сразу после инициализации, размер s теперь очень большой.Это потому, что я не инициализировал s вне функции?Я должен сохранить его в этом формате, потому что основная функция, предоставляемая моим профессором, запускается таким же образом:
stack s;
initialize(&s);