C中的Malloc语法

Shy*_*ent 3 c malloc struct linked-list list

在书中我读到malloc的语法是malloc(sizeof(int))但是在双链表程序之一中我看到以下内容:

newnode=(struct node *)malloc(sizeof(struct node))
Run Code Online (Sandbox Code Playgroud)

什么是(struct node*)在这做什么?整个代码在做什么?顺便说一下,程序中结构的代码如下.

struct node
{
char line[80];
struct node *next,*prev;
};

struct node *start=NULL,*temp,*temp1,*temp2,*newnode;
Run Code Online (Sandbox Code Playgroud)

谢谢

Ini*_*eer 5

代码动态创建一个pointer类型的struct node.在C的大多数版本中,(struct node *)不需要演员表,有些人认为不应该使用它.如果你删除了强制转换,它将是一个void*,可以用于任何类型.

因此:

newnode = (struct node*)malloc(sizeof(struct node));
Run Code Online (Sandbox Code Playgroud)

大致相当于:

newnode = malloc(sizeof(struct node));
Run Code Online (Sandbox Code Playgroud)

请参阅:具体来说,铸造malloc的结果有什么危险?

注意1:如果您使用Visual Studio编写C代码,如果不转换结果,它将为您提供红色下划线malloc.但是,代码仍将编译.

注意2:malloc在C++代码中使用要求您转换结果,如示例所示.