[問題] 關於K&R II 的section 6.6的問題
在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嗎?
此外,下方若干行的
hashval=hash(name);
np->next=hashtab[hashval];
^^^^^^^^^^^^^^^^^^^^^^^^^^
這行完全不懂幹嘛!
hashtab[hashval]=np;
^^^^^^^^^^^^^^^^^^^
這行怪怪,因為新install的nlist不一定是直接串在hashtab[]上,有可能串在某個nlist
的->next上吧?
(亦或是我眼花看錯?)
請有書的給予指導,謝謝!^ ^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.196.171
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章