精華區beta C_and_CPP 關於我們 聯絡資訊
我建議以下兩點 1.一定要親自寫過code,不要只"讀書" 2.如果寫過還難以理解,就要善用IDE的功能單步執行與監看式功能 其實我一開始學資料結構的時候 一直覺得很難想像資料間的關係 譬如說 struct Node { struct Node *next; int data; }; 那個next是什麼鬼看書真的很難理解 struct Node n1, n2, n3; n1.data = 10; n1.next = &n2; n2.data = 20; n2.next = &n3; n3.data = 30; n3.next = NULL; struct Node *now = &n1; while (now) { printf("now->data %d\n", now->data); now = now->next; } 那個 now = now->next; 到底又是什麼啊 就算實際寫過,跑過,看到印出10,20,30 還是會覺得很難理解 不過感謝我們有Debugger,可以單步執行並且看到當時的memory https://i.imgur.com/0FIEiXd.png
實際一跑就知道它們之間的關係 然後在迴圈裡一直按F10,看它在next的時候now會怎麼變化 這樣一步一步慢慢跑,慢慢看 就可以真的理解這個鬼東西到底在做什麼 接下來更複雜的tree之類的也一樣,如果覺得無法想像的話 就給他單步執行下去就對了 這是我當時學習資料結構的方式 看到那個next真的一個一個串起來的時候好感動啊XD 如果原PO還沒用過單步執行與memory monitor 就裝個Visual studio Community吧 https://www.visualstudio.com/downloads/ 隨便寫個程式按F10就可以開始探索這個新世界了XD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.13.11 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1515654440.A.F6B.html ※ 編輯: james732 (114.136.13.11), 01/11/2018 15:30:51
boss0405: 推一下,這對初學者理解真的很有幫助 01/11 17:54
cuteSquirrel: 推 01/11 18:50
johnny94: 這種建議對初學者很有幫助,想當初也是用這個來看 array 01/11 19:20
johnny94: 裡面到底放啥 01/11 19:20
Hazukashiine: Linux 的 GDB Frontend 推薦 nemiver 個人覺得好用 01/11 19:57
SecondRun: 推 01/11 23:27
renna038766: QQ 這我期末範圍耶!!! 01/15 01:22
renna038766: 我這邊前幾天也一直想 01/15 01:22
ax61316: 推這篇,我的方法也類似。 IDE 至少比GDB親民一些 01/15 20:58