Я создаю структуру внутри функции, а затем возвращаю ее указатель. По какой-то причине я все время получаю один и тот же адрес памяти.Структуры и указатели в C
typedef struct list_type
{
node_t *head;
node_t *tail;
} list_t;
list_t newList() {
list_t list = {NULL, NULL};
list_t *listptr = &list;
printf("newList: %p\n", listptr);
return listptr;
}
Выходы:
newList: 0x7fffb42c8ae0
newList: 0x7fffb42c8ae0
newList: 0x7fffb42c8ae0
Что я делаю ...
Подробнее о [неопределенном поведении] (http: //en.wikipedia.орг/вики/Undefined_behavior). У тебя есть. –
Во-первых, 'list_t *' не 'list_t'. Компилятор должен был как минимум предупредить вас об этом. Если это не так, повысите уровень предупреждения. – WhozCraig
Этот код не должен компилироваться при возврате 'list_t *', а в определении - 'list_t'. –