看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《seansylin (/欣塞玲/)》之銘言: : 在section 6.6 hash table的範例中,其中lookup function內 : struct nlist *np; : (中略) : if((np=lookup(name)) == NULL) : np=(struct nlist *)malloc(sizeof(*np)); : ^^^ : 為啥不是 sizeof(struct nlist) : 還有sizeof(*np)跟sizeof(np)會是怎樣呢?後者代表配一個pointer所需的memory嗎? 我覺得如果 np改成不同型態的指標的話,這邊就可以不用動 : 此外,下方若干行的 : hashval=hash(name); : np->next=hashtab[hashval]; : ^^^^^^^^^^^^^^^^^^^^^^^^^^ : 這行完全不懂幹嘛! : hashtab[hashval]=np; : ^^^^^^^^^^^^^^^^^^^ : 這行怪怪,因為新install的nlist不一定是直接串在hashtab[]上,有可能串在某個nlist : 的->next上吧? : (亦或是我眼花看錯?) : 請有書的給予指導,謝謝!^ ^ [ ] [ ] [hash(name)] - np - (original hashtab[hashval]) [ ] 我想應該是這一段的目的 不過手上沒書,參考看看囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.203.6
seansylin:感謝,一開始想錯了 06/30 16:52