我希望数组中的变量指向给定的对象:
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/