c-在指针的内容中分配指针



在代码中,我们可以看到在*new_node中分配了一个指针。而在C中,*new_node表示new_node的内容。那么,它的原因是什么;为什么它没有造成任何问题?

Node *create_node(int item, Node *next)
{
Node *new_node = (Node *)malloc(sizeof(Node));      //isn't it receiving the pointer as content of(*new_node) new_node?
if (new_node == NULL) {
printf("Error! Could not crate a new Noden");
exit(1);
}
new_node->data = item;
new_node->next = next;
}

在表达式中,*new_node表示"new_node指向的对象"。但是,Node *new_node = (Node *)malloc(sizeof(Node));是一个声明,而不是表达式语句,其中的文本*new_node也不是表达式。

声明的第一部分Node *new_node表示"new_node是指向Node的指针。"声明的第二部分= (Node *)malloc(sizeof(Node)),表示"将new_node初始化为(Node *)malloc(sizeof(Node))。此处的=不是赋值,也不是赋值表达式。它是声明中用于指定所定义对象的初始值的语法。所定义的对象是new_node,而不是*new_node

声明和赋值之间的语法不同,您必须习惯它。Node *new_node = foo;new_node初始化为foo,但*new_node = foo;*new_node设置为foo

Node *new_node = (Node *)malloc(sizeof(Node));

这将为Node结构的新元素分配新的动态内存。并且所分配的存储器的基址存储在new_node中。

现在,new_node指向一个新内存,但该内存为空/垃圾。它不包含任何有关节点的有用信息。因此,我们需要在结构中填充必要的信息,使其有用。

`new_node->data = item;`
new_node->next = next;

这些行将数据复制到新节点的分配内存中,并将新节点与其他节点链接。

注意:您的代码片段没有return语句。

相关内容

  • 没有找到相关文章

最新更新