-3
A
回答
2
好了,其實代碼非常具有typedef
濫用混淆可能走很長的路向兩個你和編譯器的問題。我自己不會在這個程序中有一個typedef。它在這裏沒有真正的抽象。下面是我建議(錯誤檢查的一些遺漏):
struct cache_line {
char valid;
mem_addr_t tag;
struct cache_line* next;
};
struct cache_line** cache;
void initCache()
{
cache = malloc (sizeof(*cache) * S);
for (int i = 0; i < S; i ++){
struct cache_line** curr_p = &cache[i];
for (int j = 1; j < E; j++){
*curr_p = malloc(sizeof(**curr_p));
(*curr_p)->valid = 0;
(*curr_p)->tag = 0;
(*curr_p)->next = NULL;
curr_p = &(*curr_p)->next;
}
}
}
重點要注意的事情:
我刪除了所有的類型定義。他們在這裏沒有真正的目的,而是嘗試保存打字。他們是以代碼質量爲代價的。我也將其從
struct
中刪除,因爲我相信前面的說法也適用於它。我分配了規範的內存。通過編寫
malloc(sizeof(*pointer_variable))
,無論pointer_variable
指向什麼,都可以分配足夠的內存。它有點類型不可知論者。我用「鏈接遍歷」成語遍歷鏈表。我不跟蹤「節點」,而是跟蹤指向節點的指針。在開始時它是
cache[i]
,並且在每次迭代時它都變成新分配節點內的指針。
相關問題
- 1. C++中的鏈接結構數組
- 2. Java數據結構使用鏈接列表的堆棧
- 3. 鏈接列表C中包含結構
- 4. 是C中的通用堆棧數據結構鏈接列表實現嗎?
- 5. 鏈接列表,類結構?
- 6. 數組和鏈接結構
- 7. 鏈接列表數據結構
- 8. 鏈接列表的結構,傳遞參數 - c
- 9. C++上的鏈接列表
- 10. c代表堆的數據結構
- 11. C數組鏈接列表,將數組鏈接列表分配給另一個
- 12. C鏈接列表堆棧和指針
- 13. 如何在C中的結構中顯示鏈接列表C
- 14. Java中的鏈接列表結構
- 15. 複製鏈接列表中的結構
- 16. 結構中的鏈接列表
- 17. 數組到鏈接列表C
- 18. C二維數組到鏈接列表
- 19. 打印鏈接列表數組C++
- 20. 鏈接列表的數組
- 21. 使用鏈接列表複製堆棧的構造函數
- 22. C++數據結構堆
- 23. 將結構附加到鏈接列表
- 24. 鏈接列表實現與結構
- 25. 結構鏈接列表分段 - 錯誤
- 26. 「Unix目錄是‘鏈接’結構列表」
- 27. c中嵌套的結構體/鏈接列表
- 28. c中的鏈接列表,struct結構,分段錯誤
- 29. C中的鏈接列表節點,結構原型
- 30. C編程中的簡單鏈接列表結構
用typedefing指針怎麼這麼酷......真的嗎? –
@SouravGhosh - 收入保障。它使得代碼非常糟糕,以至於沒有人能夠站在調試它的地方,而只是自己。 – StoryTeller
我不知道大聲笑,骨架代碼是這樣的,我覺得它真的很奇怪 – genericmathstudent