我是新来的,所以很抱歉没有提供我应该获得的所有必要信息,但这里没有。

struct node {
    int data;
    struct node* next;
    struct node* previous;
};

*currentB = MultByTen(*currentB); // this is a line in another function.
                                  // currentB is a struct node with data it in.

struct node* MultByTen(struct node* current) {
    struct node *newNode = malloc(sizeof (struct node));
    newNode->data = 0;
    newNode->next = NULL;
    while (current->next != NULL) {
        current = current->next;
    }
    newNode->previous = current;
    current->next = newNode;
    return current;
}

我从旁边有注释的那一行代码中得到“错误:从类型” int”分配为类型” struct node”时不兼容的类型。
我正在返回结构节点*,所以我不知道为什么会收到此错误。有任何想法吗?

-编辑:
currentB是一个链表,其中包含数据。它是
struct node* currentB = malloc(sizeof(struct node));

出于示例目的,它是1-> 2-> 3-> 4-> NULL,而我想要的MultByTen只是在列表末尾添加一个0,这样它将变成1-> 2-> 3 -> 4-> 0-> NULL

最佳答案

我猜currentB声明为struct node *currentB吗?您尝试将一个指向结构的指针分配给该结构的实际实例(*currentB不是指针,而是实际实例)。在这种情况下,该 call 也是错误的。

该行应为:

currentB = MultByTen(currentB);

注意缺少的*

我是否可以建议您尝试查找有关指针以及如何处理指针的教程?

07-24 09:44
查看更多