繁体   English   中英

包含赋值运算符右侧数据类型的方括号

[英]Brackets containing a datatype on right hand side of assignment operator

我试图理解为什么我有时会在 C 中的赋值运算符的右侧看到包含数据类型的括号。

具体来说,我试图实现一个链表,因为我还是 CI 的新手,所以我用来指导我。

我遇到了这一行: struct node* link = (struct node*) malloc(sizeof(struct node));

它是instertFirst函数的一部分,我猜它会向链表的头部添加一个新项目。

根据我目前的理解,将这一行分解为:创建一个名为linkstruct node指针,该指针指向一个新分配的内存块,该内存块是node结构的大小。

那么(struct node*)的目的究竟是什么? 我最好的猜测是它为新分配的内存块提供了一种类型......?

函数malloc返回一个类型为void *的指针,与分配内存的对象无关。

在 C 中, void *类型的指针可以分配给任何其他对象类型的指针。

所以你可以写

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

在 C++ 中,这种隐式转换是被禁止的。 您需要明确地将类型为void *的返回指针void *转换为类型struct node *就像

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

在上面提到的 C 中,这样的转换是多余的,有时仅用于代码的自我记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM