簡體   English   中英

來自不兼容指針類型的賦值[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 chainstruct chain之間的關系。

您可以改為命名結構:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM