加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中的Malloc语法

发布时间:2020-12-16 10:33:05 所属栏目:百科 来源:网络整理
导读:在书中我读到malloc的语法是malloc(sizeof(int))但是在双链表程序之一中我看到以下内容: newnode=(struct node *)malloc(sizeof(struct node)) 什么是(struct node *)在这做什么?整个代码在做什么?顺便说一下,程序中结构的代码如下. struct node{char lin
在书中我读到malloc的语法是malloc(sizeof(int))但是在双链表程序之一中我看到以下内容:

newnode=(struct node *)malloc(sizeof(struct node))

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

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

struct node *start=NULL,*temp,*temp1,*temp2,*newnode;

谢谢

解决方法

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

因此:

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

大致相当于:

newnode = malloc(sizeof(struct node));

见:Specifically,what’s dangerous about casting the result of malloc?

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读