在 C 中的链表中创建链接

标签 c struct linked-list malloc nodes

这是在列表中创建链接的代码,我从互联网上读到它以尝试理解 c 中的链接列表:

//insert link at first location

    void insertFirst(int key, int data) {
        //create a link
        struct node *link = (struct node*) malloc(sizeof(struct node));

    link->key = key;
    link->data = data;

    //point it to old first node
    link->next = head;

    //point first to new first node
    head = link;
}

我真的不明白下面一行是如何工作的:

struct node *link = (struct node*) malloc(sizeof(struct node));

更具体地说:

(struct node*)

因为我的理解是星号必须出现在指针名称之前,但它位于结构名称的末尾。如果我错了,请纠正我,如果可以的话,请解释这是如何工作的?

最佳答案

转换malloc 的返回值是不必要的。

按照标准 7.22.3.4

The malloc function returns either a null pointer or a pointer to the allocated space.

你应该检查它的返回值来知道它是否成功。

malloc 做什么?

malloc 函数为大小由size 指定且值不确定的对象分配空间。

我的理解是星号必须出现在指针名称之前,但它位于结构名称的末尾

在这里你没有取消引用任何东西。相反,您正在进行类型转换。 (这又是我要重复的不必要的)。

struct node* 这里是指针变量的一种类型。同样 intdouble 是一种类型,这也是一种类型。

关于在 C 中的链表中创建链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47246061/

相关文章:

c - 我无法将 char 字符串分配给 char 数组

go - 如何访问 Go 中接口(interface)的字段?

c - 单链表中的段错误

c - 在 C 中的 malloc 字符串之前保留元数据是否安全?

c# - 结构的不变性

cocoa - 从 cocoa 代码中获取链接库列表

c++ - 为什么在链表中创建当前变量时不使用 “new”?

c - 替代 for 循环语法

c - 指定 C :\Program Files (x86)\gnuplot\bin in C programming using Geany 的文件路径

c - 断言标准输入是开放的