簡體   English   中英

結構中指向另一個結構的指針

[英]Pointers in structures pointing to another structure

想象兩個結構定義為:

struct list
{
  struct block *first;
  struct block *last;
};

struct block
{
  uint8_t *address;
  uint32_t alloc_count;
  struct block *prev;
  struct block *next;
};

如果我做 list->first->address,它會起作用嗎? 由於 list->first 指向具有地址值的塊結構。 list->first->next 怎么樣(因為它也指向塊結構?)。 如果我執行 block->first,我認為這不會起作用,因為 first 是在列表結構中定義的?

如果我定義了一個新結構並將其聲明為:struct block *temporary = list->first,臨時是一個塊列表,還是只是列表的第一個塊?

這些問題可能聽起來很愚蠢,但過去兩個小時我一直在閱讀有關結構的文章,但似乎無法解決這個問題。 如果有人能澄清,我將不勝感激。

你不能做你寫的任何事情,因為它只是結構的聲明,而不是你正在處理的真實對象。 但是如果你創建了一些,你就可以執行你想要的所有操作。

struct list new_list;
struct block new_block;

uint8_t address = new_list->first->address; // OK
struct block target_block = new_list->first->next; // OK

當然,你不能做new_block->first因為你的塊結構中沒有first字段。

struct block *temporary = list->first既不是塊列表也不是列表的第一個塊,而是指向列表第一個塊的指針。 但是您可以通過first->nextfirst->next->next等輕松訪問所有列表。只需將i = i->next放入您的for循環中。

暫無
暫無

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

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