【发布时间】:2021-12-07 12:11:47
【问题描述】:
我试图理解为什么我有时会在 C 中的赋值运算符右侧看到包含数据类型的括号。
具体来说,我试图实现一个链表,因为我还是 C 的新手,所以我使用 this 来指导我。
我遇到了这条线:struct node* link = (struct node*) malloc(sizeof(struct node));
它是instertFirst 函数的一部分,我猜它会在链表的头部添加一个新项目。
根据我目前的理解将这一行分解为:创建一个名为link 的struct node 指针,该指针指向一个新分配的内存块,该内存块的大小与node 结构的大小相同。
那么 (struct node*) 的目的到底是什么?我最好的猜测是它为新分配的内存块赋予了一种类型......?
【问题讨论】:
-
这是一个类型转换。
-
它与
malloc()是多余的,因为它返回void *,可以将其转换为任何其他指针类型而无需强制转换。但总的来说,(typename)将值从一种类型转换为另一种类型。
标签: c pointers singly-linked-list implicit-conversion void-pointers