gpt4 book ai didi

c - 更改数组中变量的指针

转载 作者:行者123 更新时间:2023-11-30 17:55:42 25 4
gpt4 key购买 nike

我希望数组中的变量指向给定的对象:

typedef struct Object {
void *key;
struct Object *top;
struct Object *next;
} Object;

typedef struct Table{
Object *linkedObjects;
size_t size, originalSize;
HashFcn hfun;
PrintFcn pfun;
ComparisonFcn fcomp;
} Table;

Boolean InsertObject(TableP table, ObjectP object)
{
int i = (*table->hfun)(object->key, table->size);
table->linkedObjects[i] = object;
}

从之前的问题中,我了解到执行此操作 table->linkedObjects[i] 会取消对象的引用,这就是为什么我在分配给类型“Object”时收到错误不兼容的类型输入“ObjectP”。我如何告诉此时的变量指向给定的对象?我尝试做类似的事情:

*(table->linkedObjects[i]) = object;

但这显然不是正确的做法。我还应该释放作为参数获得的对象吗?

最佳答案

假设 ObjectP 被类型定义为 struct Object * (您在问题中没有提到),请尝试以下操作:

table->linkedObjects[i] = *object;

请记住,这将复制对象的内容。

如果您不希望出现这种行为,并且希望保留指针,则应将 Table 结构的 linkedObjects 成员声明为 对象 **ObjectP *

关于c - 更改数组中变量的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14031667/

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