0
假設我有以下功能:與別名改變值的指針指向
Table * lookup_set(Table * t, char * key, ValueType value)
{
int hash = lookup_hash(key);
char * key_copy = strdup(key);
Entry * bucket = t->table[hash];
...
再後來
Entry * new = (Entry *) malloc(sizeof(Entry));
new->key = key_copy;
new->value = value;
new->next = NULL;
bucket = new;
return t;
}
的叔值>表[散列]不會被更改爲新的,即使我將新分配給bucket,我認爲我設置爲指向t-> table [hash]指向的內存塊。我究竟做錯了什麼?
您正在更改'bucket'指針本身,而不是它指向的值。 –
對不起,我應該如何聲明'bucket',以便當我將'bucket'設置爲一個新的'Entry'時,那麼't-> table [hash]'也會被分配爲新的Entry?我希望能夠做到像'bucket = bucket-> next'這樣的事情,我認爲我不能用't-> table [hash]'來做。 – dyxh