주소를 통해 전달하려고합니다. 이 경우에는 char 배열이지만 아무 것도 될 수 있습니다.C void 포인터를 인수로 사용합니다.
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'에 전달하기 전에 어떤 종류의 값으로 설정해야합니다! 또한,'rickyHashTableGet'은'value'를 무언가로 설정 한 다음 버립니다. 그것을 돌려주고 싶습니까? 또는 값으로 전달하는 대신 포인터를 전달하려고 했습니까? –