Всем привет.
Дали задачку на реверс списка:
int main(void)
{
     struct Node *list;
     alloc_list(&list);
     print_list(list);          /* 0 1 2 3 4 */
     revert_list(list);
     print_list(list);          /* 4 3 2 1 0 */
     return 0;
}void revert_list(struct Node *list_head)
{
     struct Node *p = NULL;     /* previous */
     struct Node *c = NULL;     /* current */
     struct Node *n = NULL;     /* next */
     c = list_head;
     while(c != NULL) {
          n = c->next;
          c->next = p;
          p = c;
          c = n;
     }
     list_head = p;
     print_list(list_head);
}К моему удивлению, если print_list вызывается из main(), то печатается 0, а внутри reverse_list всё хорошо:
gcc -Wall -Wextra -Wpedantic -g3 rlist.c -o rlist && ./rlist 
0 1 2 3 4 
4 3 2 1 0 
0



