[英]Having trouble creating struct containing array of structs in C
好吧,我有一些typedef,例如:
typedef struct {
int validBit
int pageNumber
} PT_ENTRY;
typedef struct {
PT_ENTRY entry[128];
} PT;
稍后在代碼中,我嘗試:
PT pt = {};
int i;
for(i=0;i<128;i++){
pt.entry[i] = malloc(sizeof(PT_ENTRY));
}
這給了我錯誤:
Incompatible types in assignment.
所以我很困惑,因為我認為我昨天做了同樣的事情,並且確實起作用,然后我更改了代碼,但決定將其改回來。
pt.entry不是指針數組嗎? 我在這里想念什么?
或者更好的方法是,創建包含128個結構體PT_ENTRY的結構體PT的最好,最快的方法是什么?
這是因為entry
數組中的entry
不是指針。 它是實際結構的數組,而不是結構的指針。
如果您想要一個指針數組,則需要將該數組聲明為
PT_ENTRY *entry[128];
但是您需要考慮是否真的需要一個指針數組? 您很可能不需要它,應該讓它像現在一樣。 因此,就沒有要分配的內存,沒有要釋放的內存,也不必擔心內存泄漏或無效的指針。 如果在某個時候需要傳遞單個PT_ENTRY
作為指針,則可以使用地址運算符&
:
some_function(&pt.entry[some_index]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.