繁体   English   中英

C链表-指针间接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM