Re: [問題] 關於K&R II 的section 6.6的問題

看板C_and_CPP作者 (打字男)時間15年前 (2009/06/30 01:19), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/3 (看更多)
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
文章代碼(AID): #1AIFUUE5 (C_and_CPP)
文章代碼(AID): #1AIFUUE5 (C_and_CPP)