有人可以向我解释以下代码的作用吗。
set_element *p = (set_el*)malloc(sizeof(set_el));
p->value = elem;
p->next = NULL;
return p;
其中 elem
是参数中传递给方法的元素,我也有这个:
typedef struct set_el
{
int value;
struct set_el* next;
} set_el;
最佳答案
这看起来像一个 linked list 的实现.
struct set_el
定义链表中的一个节点,其中
value
保存节点中的int
数据。next
是指向列表中下一个节点的指针(链接)。
为要添加到链表中的新节点分配内存:
set_el *p = malloc( sizeof *p ); // cleaned up according to @JohnBode's comment
// If malloc fails, log and return
if(p == NULL)
{
// log and take necessary action.
return NULL;
}
变量elem
被复制到节点中的数据部分(即value
):
p->value = elem;
节点 p
没有下一个节点,即没有传出链接:
p->next = NULL;
指向新创建节点的指针返回给调用者:
return p;
关于C 指针和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19858180/