[英]Passing a Linked List (incompatible pointer type error)
當我嘗試調用應該初始化我的鏈表的 function 時,出現以下錯誤。
passing argument 1 of 'init_list' from incompatible pointer type [-Wincompatible-pointer-types]
init_list(list);
我不明白為什么會收到此錯誤。 這是我第一次使用鏈接列表,因此感謝您的幫助。 下面是我如何設置我的鏈表以及我的 function 的原型:
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
typedef char DATA_TYPE;
typedef struct node_t
{
DATA_TYPE item;
struct node_t* next;
} node;
typedef struct
{
node* head;
int len;
} linkedlist_t;
void init_list(linkedlist_t* plist);
這是 function:
void init_list(linkedlist_t* plist)
{
plist->head = (node *)malloc(sizeof(node));
plist->head->next = NULL;
plist->len = 0;
}
這就是我在main
中調用 function 的方式。
#include "linkedlist.h"
int main(void) {
node list;
init_list(&list);
return 0;
}
您正在傳遞一個node
,您的 function 需要一個linkedlist
。 這兩個對象不兼容,因為node
只是linkedlist
的一部分。
如果您的init_list
function 僅初始化node
部分,那么您應該將簽名更改為期望一個node
,並且可能還將其重命名為init_node
,這將使代碼更易於讀者理解。
void init_node(node *plist);
否則將 list 更改為linkedlist
類型。
linkedlist_t list;
init_list(&list);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.