Я пытаюсь реализовать стек, но не понимаю, как использовать непрозрачный указатель. Вот мое заявление:Впервые работает с непрозрачными указателями
/* incomplete type */
typedef struct stack_t *stack;
/* create a new stack, have to call this first */
stack new_stack(void);
А вот моя структура стека и new_stack функция:
struct stack_t {
int count;
struct node_t {
void *data;
struct node_t *next;
} *head;
};
stack new_stack(void)
{
struct stack_t new;
new.count = 0;
new.head->next = NULL;
return new;
}
В моих глазах, я возвращаю адрес нового стека, но это бросает ошибку на компиляции от возвращения нового. Что я делаю не так?
Ошибка компиляции сообщает вам. Что это? Мы можем помочь вам в том, как читать. – Hurkyl
@Hurkyl error: возвращает 'struct stack_t' из функции с несовместимый тип результата 'stack' (aka 'struct stack_t *'); взять адрес с & возврата &new; – Connor
@Hurkyl но когда я вернуться и новый вместо этого, я получаю предупреждение: адрес стековой памяти, связанный с локальной переменной «новый» вернулся – Connor