最近我又回到了C编程中,并且遇到了一些我正在编写的链表实现的问题。编写链表实现时遇到C指针问题
这里是我的结构定义:
typedef struct linked_list_entry {
struct linked_list_entry *next;
struct linked_list_entry *prev;
void* data;
} linked_list_entry;
typedef struct linked_list {
uint32 count;
struct linked_list_entry *first;
struct linked_list_entry *last;
} linked_list;
这里是有问题的代码:
int linked_list_add_entry(linked_list** linked_list, void* data)
{
linked_list_entry* new = malloc(sizeof(linked_list_entry));
...
DPRINT("last(%p), new (%p)\n", (*linked_list)->last, new);
(*linked_list)->last->next = new;
DPRINT("(*linked_list)->last(%p)->next (%p)\n", (*linked_list)->last, (*linked_list)->last->next);
随着调试输出:
data-types/linked-list.c:37:linked_list_add_entry(): last(0x7fa497402790), new (0x7fa4974027b0)
data-types/linked-list.c:39:linked_list_add_entry(): (*linked_list)->last(0x7fa4974027b0)->next (0x0)
任何想法,为什么最后指针变为新新指针变为NULL?
感谢
是^新^不是保留字? – MKR
@ManojKumarRai不,''new'不是C中的保留字。你用C++混淆了。 – Gilles
'* linked_list'指针的值是什么?将其添加到转储。你如何为'linked_list'分配内存? – AnT