c-结构节点到节点的指针类型不兼容



我正在为我的课程做实验,我遇到了一些警告问题。我们得到了一个无法改变的结构:

typedef struct Element{
int value;
double key1;
double key2;
struct NODE* next;
struct NODE* sort1;
struct NODE* sort2;
}Node;

这是主要代码:

struct Element * randomizer(int A){
/*Function to have "real" random*/
srand((unsigned int) time(0));
Node *head;
Node *ptr;
int i = 0;
head = NULL;
ptr = NULL;

/*Vlaues beiong intialized*/
for ( i = 0 ; i <= A; i++){
ptr = malloc(sizeof(Node));
ptr->value = rand()%11;
while (ptr->value == 0 || ptr->value == 10 ){
ptr->value = rand()%11;
}
ptr->key1 =  (rand()%41)+10;
while (ptr->value == 10.0 || ptr->value == 50.0 ){
ptr->key1 =  (rand()%41)+10;
}
ptr->key2 = (rand()%41)+50;
while (ptr->value == 50.0 || ptr->value == 90.0 ){
ptr->key2 =  (rand()%41)+50;
}
ptr->next = head;
head = ptr;
}
ptr->sort1 = NULL;
ptr->sort2 = NULL;
return ptr;
}

ptr->next = head;,我收到一个错误,说

不兼容的指针类型将类型节点分配给结构节点

如何正确执行此操作?

head被声明为Node *,由于typedef,这相当于struct Element*

next成员被声明为struct NODE *

CCD_ 7与CCD_。

您可能应该将结构成员更改为

struct Element *next;

在这个typedef声明中

typedef struct Element{
int value;
double key1;
double key2;
struct NODE* next;
struct NODE* sort1;
struct NODE* sort2;
}Node;

你声明了两种不同的结构。第一个具有类型struct Element,类型别名Node,并且在其定义中声明了类型struct NODE

即使没有打字错误并且数据成员具有类型struct Node *而不是struct NODE *,但是类型struct NodeNode不是相同的类型。

你应该像一样声明结构

typedef struct Element{
int value;
double key1;
double key2;
struct Element* next;
struct Element* sort1;
struct Element* sort2;
}Node;

C区分大小写,因此NodeNODE是两个不同的、不相关的东西。您试图在代码中使用Node,但您说不能更改的声明有NODE,因此它们不兼容。您可能需要更改代码才能同时使用NODE

相关内容

  • 没有找到相关文章

最新更新