C 如何正确编写代码行*(节点指针)——>;N

C 如何正确编写代码行*(节点指针)——>;N,c,pointers,struct,C,Pointers,Struct,我有以下结构(带有指向该结构指针的typedef): 在一个函数中,Im以以下方式使用类型Node*: Node* node_pointer; Node new_node=malloc(sizeof(*new_node)); while(node1!=NULL && node2!=NULL) { node_pointer=((node1->n)>(node2->n) ? &node1, &node2); new_n

我有以下结构(带有指向该结构指针的typedef):

在一个函数中,Im以以下方式使用类型Node*:

Node* node_pointer;
Node new_node=malloc(sizeof(*new_node));
while(node1!=NULL && node2!=NULL) {
        node_pointer=((node1->n)>(node2->n) ? &node1, &node2);
        new_node->n=*(node_pointer)->n;
        *(node_pointer)=*(node_pointer)->next;
        new_node->next=malloc(sizeof(*new_node));
        new_node=new_node->next;
}
显然,表达式*(指向 struct)->字段是非法的。如何在保持简单的同时编写正确的代码?

请尝试以下代码:
(*节点指针)->n

新建节点->n=*(节点指针)->n-->
新建节点->n=(*节点\u指针)->n(还有:强烈建议不要将指针隐藏在typedef后面)额外:您可以使用malloc()两次:一次在循环之前,一次在循环内部。这在我看来过于复杂;如果循环执行零次会发生什么?您是否尝试过*((节点\指针)->n)?您正在尝试遵从指针(获取的内容),然后指向我相信的结构中的某个内容。
node\u pointer=((node1->n)>(node2->n)?&node1,&node2)
-->逗号可能是用作
,您不需要所有这些
()
非常强烈的建议:不要
类型转换
指针!这会隐藏语义并最终导致混淆。抱歉,我不是第一次看到它
Node* node_pointer;
Node new_node=malloc(sizeof(*new_node));
while(node1!=NULL && node2!=NULL) {
        node_pointer=((node1->n)>(node2->n) ? &node1, &node2);
        new_node->n=*(node_pointer)->n;
        *(node_pointer)=*(node_pointer)->next;
        new_node->next=malloc(sizeof(*new_node));
        new_node=new_node->next;
}