所以我试着打印一个链表,它说参数头是不兼容的参数类型。这个链表已经做好了,如果不放在另一个函数里就可以工作。我就是不明白为什么这个特定的函数不工作。
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);
}
1条答案
按热度按时间bf1o4zei1#
在这个函数void
printList(listElement *head)
中,您需要一个指向listElement
的指针,但是在main函数中,您调用的printList函数的类型是listElement
,而不是listElement*
。要解决这个问题,你必须声明你的
head
变量,比如listElement* head;
,或者你必须给予printList函数一个指向head变量的指针,比如printList(&head);
。无论哪种方式,这取决于你想用它做什么。但第一种建议更常见。