对于测试任务,我应该检测以下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
!因此编译器无法知道类型chain
和struct chain
之间的关系。
您可以将结构命名为:
typedef struct chain {
struct chain *next;
int contents;
} chain;