C 指针和结构

标签 c pointers struct

有人可以向我解释以下代码的作用吗。

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/

相关文章:

c - 寄存器存储类的范围是什么?

c - 在 C 中搜索递归数据结构

当定义包含参数时调用不带参数的函数

c - 这个问题的正确输出是什么?

python - 有没有人有一个很好的例子来说明如何使用 struct python 模块将 numpy 数组保存到文件中?

c++ - 指针算术题(数组大小)[C++]

c++ - 将 int 的单个数字存储在数组中

c++ - 关于 C++ 指针和引用,需要澄清

c - 如何在 C 中获取嵌套结构成员的偏移量?

C# 使用数组编码(marshal)结构