[英]C linked list - pointer indirection
我正在尝试在C中创建一个链表,但是我得到了这个奇怪的警告,尽管它似乎可以正常工作,但我不知道如何摆脱它(除非使用编译指示)。 我尝试使用双指针,并在“创建”函数中使用了指针属性,但到目前为止没有成功。 任何帮助将非常感激。
#pragma once
#include <stdint.h>
typedef struct node *node_ptr; // node pointer type
typedef struct list *list_ptr; // list pointer type
void create(list_ptr);
实现方式:
#include <stdlib.h>
#include "list.h"
typedef struct node {
void * e; // element
node_ptr next; // next pointer
}node_t;
typedef struct list {
node_ptr front; // front pointer
}list_t;
void create(list_ptr self) { // create a list
self->front = NULL;
}
在create()行上,我得到了这些警告,但是它们对我来说没有多大意义。
#include "list.h"
void main(void) {
list_ptr list = NULL;
create(&list);
}
警告:
warning C4047: 'function': 'list_ptr' differs in levels of indirection from 'list_ptr *'
warning C4024: 'create': different types for formal and actual parameter 1
您应该在create()
使用list
,否则您将传递struct node **
'function':'list_ptr'的间接级别与'list_ptr *'的不同之处在于,这显然表明您正在传递的list_ptr*
与list_ptr
本身不同。
因为基本上是初始化,所以最好给它起一个init
而不是create
的名称。 -池上的评论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.