【发布时间】:2017-04-04 17:06:51
【问题描述】:
所以我正在尝试使用该地址访问链表的第一个节点,这对我来说似乎没有多大意义。存储链表的结构体定义为
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
我已经用
初始化了一个链表struct ListNode* l3;
每次我调用 l3->next 时,我都会在它前面加上
l3->next = (void *) malloc(size * sizeof(struct ListNode));
我已将链表的第一个节点的地址存储为:
int* first;
first = (int *) l3; //noting that (void *) is also a valid cast
我确实从 0x1235270 中打印出有效的地址。我正在尝试使用
访问第一个节点的 valprintf("%d\n", first->val);
它给了我:
Line 29: request for member 'val' in something not a structure or union
错误。然而,当我首先在 leetcode 中返回时(因为我试图在那里做一个问题),它确实将它检测为一个链表(在输出中显示一个链表)。我想知道我做错了什么,以及我如何实际访问第一个节点的值。
【问题讨论】:
-
请注意,
struct ListNode* l3;不会初始化l3(除非它是一个全局变量)。您对l3->next的分配也是可疑的(取消引用未初始化或空指针),并且它(本身)不会创建链接列表。 -
至于您的错误,
first不是指向ListNode结构的指针,而是指向int的指针。您必须为作业投l3的事实应该表明您做错了。
标签: c pointers linked-list