Как и большинство новичков в C, я реализую простой связанный список.
Каждый узел списка определен так:
typedef struct list_node {
void * data;
struct list_node * next;
} list_node_t;
Я создал тестовую программу для созданияи итерировать список.Операции создания и вставки работают правильно.Однако приведенный ниже код вызывает у меня проблемы:
list_node_t * node = NULL;
list_iter_reset(list, node);
if (node == NULL) {
printf("Node is NULL.\n");
} else {
printf("Node is not NULL.\n");
}
fflush(stdout);
Функция list_iter_reset()
определена ниже.Обратите внимание, что list->head
не указывает на NULL, поскольку я вставил узлы в список ранее.
void list_iter_reset(list_t list, list_node_t * node)
{
node = list->head;
if (node == NULL) {
printf("Node is NULL.\n");
} else {
printf("Node is not NULL.\n");
}
fflush(stdout);
}
Результат выполнения этого кода следующий:
Node is not NULL.
Node is NULL.
Так как я передаю указатель на узел функции, почему созданный узел в тестовой программе все еще указывает на NULL после вызова этой функции?
Я предполагаю, что простой арифметический аспект указателя прошел через мойголова здесь.Я искал вокруг и не мог найти подобную проблему.
Заранее спасибо.