我試圖通過地址傳遞某些東西。在這種情況下,一個char數組,但它可以是任何東西。C無效指針作爲參數
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功能它是正確的內部「價值」,但是當我檢查在主函數被調用它的壞後的值。它似乎沒有設置到正確的內存地址。爲什麼是這樣?
在將'val2'傳遞給'rickyHashTableGet'之前,您必須將'val2'設置爲某種類型的值!此外,'rickyHashTableGet'將'value'設置爲某個值,然後將其丟棄。你想退回嗎?或者你想傳遞一個指針而不是按值傳遞它? –