sách gpt4 ai đã đi

C 空指针作为参数

In lại 作者:行者123 更新时间:2023-11-30 14:22:43 hai mươi bốn 4
mua khóa gpt4 Nike

我正在尝试通过地址传递一些内容。在本例中是一个 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 中检查时,它是错误的。似乎没有设置正确的内存地址。这是为什么?

1 Câu trả lời

int rickyHashTableGet(rickyHashTable *table, char *key, void *value)
{
value = table->entries[0].value;
}

这会忽略传递的giá trị。将 giá trị 设置为某个内容,然后将其丢弃。这是不对的。

void *val2;
rickyHashTableGet(&symbolTable, "ok", val2);

这不会将 val2 设置为任何内容,从而将无意义的值传递给 rickyHashTableGet。这不可能是正确的。

你想要:

int rickyHashTableGet(rickyHashTable *table, char *key, void **value)
{
*value = table->entries[0].value;
}

它需要一个指向 trống rỗng * 的指针并使其指向某个东西。

还有:

void *val2;
rickyHashTableGet(&symbolTable, "ok", &val2);

它将 val2 của地址传递给 rickyHashTableGet,以便它可以设置其值。

关于C 空指针作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576872/

hai mươi bốn 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com