簡體   English   中英

無法在C中的struct中聲明指向struct的指針數組

[英]Can not declare array of pointers to struct inside struct in C

我想在struct內部有一個數組,該數組將存儲相同數據類型的指針(即struct map )。 我查看了Stackoverflow,發現了這一點:

struct map {
    int city;
    struct map **link = (struct map *)malloc(204800 * sizeof(struct map *));
}

但我收到此錯誤:

error: expected ':', ',', ';', '}' or '__attribute__' before '=' token    
    struct map **link = (struct map *)malloc(204800*sizeof(struct map *));

這是一個結構定義,您不能在聲明中進行分配或使用任何函數,因為聲明不會被執行,它只是關於“ map”類型的結構外觀的一種模板,這樣編譯器將知道當我們創建結構映射的實例時應該為結構映射分配多少內存。

當您想在結構映射中使用成員(例如,使指針鏈接指向某個可行的內存段)時,您需要在某處創建“映射”的實例,只有這樣,您才能調用malloc並使鏈接指向結果內存段。

解決此問題的方法是先聲明結構,如下所示:

struct map{
int city;
struct map **link;
};

當您在main中創建該結構的實例時,可以為鏈接分配空間,如下所示:

int main()
{
   struct map *temp = malloc(sizeof(struct map));
   temp->link = malloc(204800*sizeof(struct map *));
   return 0;
}

暫無
暫無

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

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