这是在列表中创建链接的代码,我从互联网上读到它以尝试理解 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*
这里是指针变量的一种类型。同样 int
或 double
是一种类型,这也是一种类型。
关于在 C 中的链表中创建链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47246061/