Re: [問題] 關於K&R II 的section 6.6的問題
1.
配置後:
*np 就是指標指到的的東東,
sizeof(*np) 相當於 nlist 的大小
你要加一個 node 進 list, 當然配置 node 的大小
sizeof(struct nlist) 跟 sizeof(*np) 是一樣大,
兩個寫法都可以吧, sizeof(np) = 4, 因為 np 是指標
原來的 nlist 大小應為 12 因為他結構內有三個指標
那你這樣記憶體就少宣告程式就會掛
2.
hashval=hash(name);
np->next=hashtab[hashval];
這邊是把新增的項目 插入到hashtab[hashval]表的頭,
原本的項目被往後面擠, 初始狀態是NULL,
所以最後一個項目的 next 指到 NULL
有的東西有疑問可以試著跑跑看,
跑久了會有幫助, 這本的習題寫起來很爽, 會變強 @@"
※ 引述《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嗎?
: 此外,下方若干行的
: hashval=hash(name);
: np->next=hashtab[hashval];
: ^^^^^^^^^^^^^^^^^^^^^^^^^^
: 這行完全不懂幹嘛!
: hashtab[hashval]=np;
: ^^^^^^^^^^^^^^^^^^^
: 這行怪怪,因為新install的nlist不一定是直接串在hashtab[]上,有可能串在某個nlist
: 的->next上吧?
: (亦或是我眼花看錯?)
: 請有書的給予指導,謝謝!^ ^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.123.178
→
06/30 16:53, , 1F
06/30 16:53, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):