[英]assignment from incompatible pointer type [-Wincompatible-pointer-types]
[英]Assignment from incompatible pointer type[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: %d\n",index,(*p).contents);
p = (*p).next;
free(pointer);
pointer = p;
index++;
} ;
printf("First cell: %d\n",(*list).contents);
return 0;
}
我收到以下 2 個錯誤:
Assignment from incompatible pointer type [Wincompatible-pointer-types]
在語句p=(*p).next
。
我有一種感覺,這可能是微不足道的,但我是 C 的新手,無法弄清楚這些語句的正確語法。 非常感謝幫助。
typedef struct {
struct chain *next;
int contents;
} chain;
這將創建一個匿名結構chain
。 但是next
指針的類型是struct chain*
。 但是您的代碼中根本沒有定義類型struct chain
! 所以編譯器無法知道 type chain
和struct chain
之間的關系。
您可以改為命名結構:
typedef struct chain {
struct chain *next;
int contents;
} chain;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.