正在从不兼容的指针类型-C传递“”的参数1

正在从不兼容的指针类型-C传递“”的参数1,c,pointers,struct,declaration,typedef,C,Pointers,Struct,Declaration,Typedef,我从不兼容的指针类型中得到了传递参数1“add_to_polymone”的错误,但我很确定我没有。但我对C很陌生,这是一项任务 标题,多项式 #ifndef POLYNOMIAL_H #define POLYNOMIAL_H typedef struct { void * data; struct poly_t* next; } poly_t; void add_to_polynomial(poly_t * poly, const term_t * term); #endif

我从不兼容的指针类型中得到了传递参数1“add_to_polymone”的错误,但我很确定我没有。但我对C很陌生,这是一项任务

标题,多项式

#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H

typedef struct {
  void * data;
  struct poly_t* next;
} poly_t;
void add_to_polynomial(poly_t * poly, const term_t * term);    
#endif
这是一个不同的文件-polymone.c的内部

void add_to_polynomial(poly_t* poly, const term_t* term) 
{
  if(poly->next != NULL)
  { add_to_polynomial(poly->next, term); }
}
在过去的几天里,我尝试了各种各样的东西,但最终我放弃了,来到了这里。这是说poly->next是一个不兼容的指针类型。。。但是它是指向自身另一个实例的指针,那么这怎么不起作用呢?所有的错误都是什么意思?它认为poly->next不是poly\t?另外,为什么struct poly_t*与poly_t*不同?它们不是一样的东西吗


第一次在这里问问题,如果我没有提前提供足够的信息或东西,请道歉。

在这个typedef定义中

typedef struct {
  void * data;
  struct poly_t* next;
} poly_t;
您声明了一个未命名结构,其类型在数据成员的声明中具有别名poly\u t和命名结构struct poly\u t

  struct poly_t* next;
而是写

typedef struct poly_t {
  void * data;
  struct poly_t* next;
} poly_t;
考虑到此功能

void add_to_polynomial(poly_t* poly, const term_t* term) 
{
  if(poly->next != NULL)
  { add_to_polynomial(poly->next, term); }
}
没有道理。它所做的只是在列表中找到一个空指针

你的意思好像是

void add_to_polynomial( poly_t **poly, const term_t *term ) 
{
    if ( *poly == NULL )
    {
        *poly = malloc( sizeof( poly_t ) );
        ( *poly )->data = term;
        ( *poly )->next = NULL;
    }
    else
    {
        add_to_polynomial( &( *poly )->next, term);
    }
}

哦,天哪,我可以发誓我试过了,但我想不是。非常感谢你!也谢谢你的快速回复!我将在~3分钟内接受它,当它允许我: