У меня проблема с моими указателями и структурами в C (я знаю, я знаю, довольно просто!). Я практиковал свою процессуальную парадигму. Это первый раз, когда я использую отладчик, потому что он мне действительно не нужен раньше в моей жизни: <так что я, если вы помогаете мне, я буду благодарен. </p>
Я определил следующую структуру, чтобы составить список:
typedef struct node {
int info;
struct node *next;
struct node *prev;
} node_t;
А затем эта функция, чтобы заполнить его:
void addNodo(node_t * list, int x){
node_t * pointer;
node_t * temp;
temp = (node_t *)malloc(sizeof(node_t));
temp->info = x;
temp->next = NULL;
temp->prev = NULL;
pointer = list;
if(pointer == NULL){ //it's empty so start it
list = temp;
return;
}
if (pointer->info <= x) { //I like my lists tidy so...
while((pointer->next != NULL) && (pointer->info <= x)){
pointer = pointer->next;
}
if(pointer->next == NULL){
pointer->next = temp;
temp->prev = pointer;
return;
}
pointer->next->prev = temp;
temp->next = pointer->next;
temp->prev = pointer;
pointer->next = temp;
return;
}
}
И затем, делая это:
int main(int argc, char** argv) {
node_t * list = NULL;
addNodo(list, 1);
printf("x: %d", list->info);
return (EXIT_SUCCESS);
}
Это вызывает у меня ошибку сегментации! Когда я отлаживаю его, все весело и игры, пока он не пройдет строку ++++, список адресов возвращается к 0x0 и не может заставить его работать. Я знаю, что где-то есть ошибка, но, насколько мне известно, это совершенно нормально. Пожалуйста, найдите мою ошибку и научите меня некоторым указателям.