struct node* new_node =
(struct node*) malloc(sizeof(struct node));
Run Code Online (Sandbox Code Playgroud)
我不明白*这里:...(struct node*) malloc(siz...
首先,*属于node或malloc?这是什么意思?指针如何与内存函数malloc有关?我真的很困惑*位置
谢谢
C中括号(例如(struct node *))中的类型名称称为"强制转换".这是一种将表达式类型更改为命名类型的方法,通常用于指针.
但是,这是忽略了我在转换malloc结果时的建议的代码.是演员不是这里所需要,使这(在我看来,也许不是很令人惊讶,如果你遵循这个链接),而糟糕的代码.
编写此分配的最佳方法是:
struct node * new_node = malloc(sizeof *new_node);
Run Code Online (Sandbox Code Playgroud)
这提到了类型只有一次,丢弃了可能引入错误的强制转换,并且读取既无意义又麻烦,并且在指定要分配的内存时避免引入脆弱性.这是胜利,赢得胜利.