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

标签 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] 会取消对象的引用,这就是为什么我在分配给类型“Object”时收到错误不兼容的类型输入“ObjectP”。我如何告诉此时的变量指向给定的对象?我尝试做类似的事情:

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

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

最佳答案

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

table->linkedObjects[i] = *object;

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

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

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

相关文章:

c - 在 C 中使用 strtok 进行字符串解析

c++ - C - PJLIB 为什么不工作?

c - 2个内联函数在C中相互调用的行为

c - C 中的 array_length

c - 将幂视为 C 语言中 2^2 的写法

c - 为什么会出现浮点异常?

ios - 奇怪的 atoi(char *) 问题

检查输入十六进制消息的第三个位置 --> 在 C 程序中

c - 使用 ioctl TIOCOUTQ 进行套接字编程

c - 如何确定mac SDK是否*小于*