正在从不兼容的指针类型-C传递“”的参数1
我从不兼容的指针类型中得到了传递参数1“add_to_polymone”的错误,但我很确定我没有。但我对C很陌生,这是一项任务 标题,多项式正在从不兼容的指针类型-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
#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分钟内接受它,当它允许我: