【发布时间】:2022-12-08 00:45:19
【问题描述】:
所以我尝试打印一个链表,它说参数头是不兼容的参数类型。 该列表已经正确制作并且如果不放入另一个函数则可以工作。我只是不明白为什么这个特定功能不起作用。
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);
}
【问题讨论】:
-
您正在传递
printList类型为listElement的对象,但它期望指针对这样一个对象。这些是不可互换的。 -
通常你会做
printList(&head),如果你想要printList对指针传递的head对象进行操作。然而,在这个程序中head是未初始化的;希望您的实际程序中还有其他代码。 -
head 之前用函数 create List(head) 初始化过,我只是没有显示它,因为我认为它无关紧要而且它有效
-
如果
head在使用前被初始化,那么请显示它,因为目前在问题中它不是,因此这是您的代码抛出异常的合法原因。另请显示抛出的异常。
标签: c