gpt4 book ai didi

c - 指向 malloc 的指针?

转载 作者:太空狗 更新时间:2023-10-29 15:55:37 25 4
gpt4 key购买 nike

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

我不明白这里的 * : ...(struct node*) malloc(siz...首先,*属于node还是malloc?这是什么意思?指针与内存函数 malloc 有什么关系?我真的对 * 位置感到困惑

谢谢

最佳答案

C 中括号中的类型名称(例如 (struct node *))称为“强制转换”。这是一种将表达式的类型更改为命名类型的方法,通常与指针一起使用。

但是,这段代码忽略了 Do I cast the result of malloc 中的建议.这里不需要强制转换,这使得这段代码(在我看来,如果您点击了该链接,也许并不奇怪)是相当糟糕的代码。

写这个分配的最好方法是:

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

这只提到了一次类型,删除了可能引入错误且阅读起来既无意义又麻烦的强制转换,并避免在指定要分配多少内存时引入脆弱性。这是胜利,胜利。

关于c - 指向 malloc 的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12068610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com