gpt4 book ai didi

c - 在 C 中创建包含结构数组的结构时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:14 25 4
gpt4 key购买 nike

好的,我有一些类型定义,例如:

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 数组中的条目不是指针。它是实际结构的数组,而不是指向结构的指针。

如果你想要一个指针数组,你需要将数组声明为

PT_ENTRY *entry[128];

但您需要考虑是否真的需要一个指针数组?很可能您不需要它,应该让它保持原样。这样就没有内存可以分配,没有内存可以释放,不用担心内存泄漏或无效指针。如果在某些时候,您需要将单个 PT_ENTRY 作为指针传递,那么您可以使用寻址运算符 &:

some_function(&pt.entry[some_index]);

关于c - 在 C 中创建包含结构数组的结构时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23517401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com