打印链接列表中的参数不兼容- C

ljsrvy3e  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(122)

所以我试着打印一个链表,它说参数头是不兼容的参数类型。这个链表已经做好了,如果不放在另一个函数里就可以工作。我就是不明白为什么这个特定的函数不工作。

struct data {
    char foodName[FILENAME_MAX];
    int rating;
    float price;
};

typedef struct listElement {
        struct listElement *next;
        struct data food;
        struct listElement *previous;
} listElement;

void printList(listElement *head);
void printElement(listElement *element);

int main()
{
    struct data food;
    listElement head;

    printList(head); <-- this one gets an error

    return 0;
}

void printList(listElement *head)
{
    if (head == NULL) {
        printf("Linked list is empty.\n");
    } else {
        printf("Printing linked list to result file...\n");
        printElement(head);
        printf("Linked list successfully printed to result file.\n");
    }
}

void printElement(listElement *element)
{
    if (element == NULL || file == NULL) {
        return;
    } else {
        printf ("name = %s rating = %d price = %f\n", element->food.foodName, element->food.rating, element->food.price);
        printElement(element->next);
    }
bf1o4zei

bf1o4zei1#

在这个函数void printList(listElement *head)中,您需要一个指向listElement的指针,但是在main函数中,您调用的printList函数的类型是listElement,而不是listElement*
要解决这个问题,你必须声明你的head变量,比如listElement* head;,或者你必须给予printList函数一个指向head变量的指针,比如printList(&head);
无论哪种方式,这取决于你想用它做什么。但第一种建议更常见。

相关问题