簡體   English   中英

無法在C中創建包含結構體數組的結構體

[英]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.

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