После того, как я оторвался от программирования на языке C, я снова оказался в тупике для занятий и пытаюсь наверстать упущенное, особенно в указателях.
В текущем задании мы конвертируем программу изструктура массива в простой связанный список.Чтобы освежить свою память, я попытался реализовать ее в отдельной программе, но столкнулся с проблемой.
Мой код:
struct node{
int val;
struct node *next;
};
typedef struct node *item;
item newNode(void); //function prototype
void main(){
item *cur, *itemList;
int i;
itemList=NULL;
for (i=0; i<=10; i++){
cur= newNode();
cur->val=i;
cur->next= itemList;
}
}
item newNode(void) {
item box; /* the new object to return */
box = (item) malloc (sizeof (struct node));
if (box == NULL) {
printf("ERROR: emalloc failed for new Box\n");
exit(0);
}
/* initialize fields */
box->val=0;
return box;
}
Первое сообщение об ошибке приходит на cur= newBox()
и указывает, что выполняется присвоение несовместимого типа указателя.Я не уверен почему, так как cur это указатель на узел, а box это структура.Откуда исходит несовместимый указатель?