【发布时间】:2012-11-27 03:18:34
【问题描述】:
我试图通过地址传递一些东西。在这种情况下是一个 char 数组,但它可以是任何东西。
void rickyHashTableAdd(rickyHashTable *table, char *key, void *value)
{
rickyHashTableEntry entry;
entry.key = strdup(key);
entry.value = value;
table->entries[0] = entry;
}
int rickyHashTableGet(rickyHashTable *table, char *key, void *value)
{
value = table->entries[0].value;
}
int main (void)
{
void *val;
val = "what up";
rickyHashTableAdd(&symbolTable, "ok", val);
void *val2;
rickyHashTableGet(&symbolTable, "ok", val2);
printf("result: %s\n", val2);
}
当我在 rickyHashTableGet 函数中检查“value”的值时,它是正确的,但是当我在调用函数后签入 main 时,它就很糟糕。它似乎没有设置为正确的内存地址。这是为什么呢?
【问题讨论】:
-
您必须先将
val2设置为某种值,然后才能将其传递给rickyHashTableGet!此外,rickyHashTableGet将value设置为某物,然后将其丢弃。你想退货吗?还是你想传递一个指向它的指针而不是按值传递它?
标签: c pointers void-pointers memory-address