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)
谢谢
代码动态创建一个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)
注意1:如果您使用Visual Studio编写C代码,如果不转换结果,它将为您提供红色下划线malloc.但是,代码仍将编译.
注意2:malloc在C++代码中使用要求您转换结果,如示例所示.