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 *
。
struct NODE *
不一样struct Element *
。
您可能应该将结构成员更改为
struct Element *next;
推荐阅读
- liquibase - Liquibase generateChangeLog 创建空日志文件
- arrays - 在 Laravel 中验证数组时如何使用数组项规则添加验证自定义消息?
- elasticsearch - Logstash 6.2.4 陷入无限重试循环
- c - 在错误/警告输出中禁用某些宏的扩展
- python - 谁能解释 min([1,2,3,5,6], key=lambda x: abs(x-8)) 背后的逻辑
- javascript - 在继续使用 NodeJS 之前等待 API 调用
- c# - 构建一个不包含您在匹配中查找的第一个和最后一个字符的正则表达式
- android - 如何使用改造 2.0 解析 XML 响应?
- apache-spark - 如何在pySpark中有条件地替换值并将替换后的值用于下一个条件
- vue.js - 映射的 getter 未定义