c-不兼容指针类型[Wincompatible pointer types]的赋值



对于测试任务,我应该检测以下C程序中的错误:

#include <stdlib.h>
#include <stdio.h>
typedef struct {
struct chain *next;       
int contents;  } chain; 
int main()  {     
int index;     
chain *list;     
chain *p;    
chain *pointer;     
list = malloc(sizeof(chain));     
p = list;     
for(index=0;index<10;index++) {       
(*p).contents = index;       
(*p).next = malloc(sizeof(chain));       
p = (*p).next; 
} ;     
p = pointer = list;     
index = 0;     
while (index < 9) { 
printf("cell # %d: %dn",index,(*p).contents);       
p = (*p).next;       
free(pointer);       
pointer = p;       
index++; 
} ;     
printf("First cell: %dn",(*list).contents);     
return 0;  
}

我得到以下2个错误:

Assignment from incompatible pointer type [Wincompatible-pointer-types]

在语句CCD_ 2。

我有一种感觉,这可能是微不足道的事情,但我是一个完全的C初学者,无法找出这些语句的正确语法。非常感谢您的帮助。

typedef struct {
struct chain *next;
int contents;
} chain;

这创建了匿名结构CCD_ 3。但是next指针的类型是struct chain*。但是在您的代码中根本没有定义类型struct chain!因此编译器无法知道类型chainstruct chain之间的关系。

您可以将结构命名为:

typedef struct chain {
struct chain *next;
int contents;
} chain;

最新更新