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

时间:2012-12-25 14:53:59

标签: c

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

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]会解除对象,这就是我收到错误incompatible types when assigning to type ‘Object’ from type ‘ObjectP’的原因。我怎样才能告诉那个时候的变量指向给定的对象?我尝试过这样的事情:

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

但这显然不是这样做的方法。我应该将我得到的对象作为参数释放吗?

2 个答案:

答案 0 :(得分:0)

假设ObjectP的类型确定为struct Object *(您未在问题中提及),请尝试以下操作:

table->linkedObjects[i] = *object;

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

如果您不想要此行为,并且希望保留指针,则应将linkedObjects结构的Table成员声明为Object **或{{ 1}}。

答案 1 :(得分:0)

如果使用类似malloc(i * sizeof(Object *)的内容进行内存分配;并且您的对象也是指向Object的指针,那么它应该可以工作。