[英]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->next
、 first->next->next
等輕松訪問所有列表。只需將i = i->next
放入您的for
循環中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.