QG之魔鬼訓練營系列:第五周周二兩日結

這是訓練營第十六篇日記,日期:2016年5月10日

--------------------------------生活小記--------------------------------

看了郭天祥的大學生活,發現校園生活不完全是象牙塔,也是黃金屋,在學校除了學習,負責學生工作,剩餘的時間拿來發展個人興趣,這是多麼美好的時光.利用學校的資源,不用擔心資金問題,只要牢牢抓住機會,付出時間便可以沉浸在感興趣的方面愛不釋手.

------------------------------學習開發比賽概要-----------------------------

這兩天學的東西比較散,需要什麼了解什麼.

第一部分:組內培訓單片機

1.學習了基礎知識第一章,看著晶元,封裝技術,引腳,電平大概有點了解.但最吸引我的還是寫程序,燒程序,然後看到自己做出的東西擺在眼前工作起來,那是多麼的開心丫,想想都有點小激動.

2.通過看序言部分,知道了單片機的學習理論知識固然重要,但是實操更重要,所以也就買了塊板,準備邊學變操作.

3.培訓的時候印象最深刻的還是各種原理圖,各種邏輯電路圖,還有存儲器,寄存器等計算機硬體,讓我意識到要抓緊補充計算機組成的知識,如果不會看電路圖,原理圖,那麼也就沒法學會單片機了.

第二部分:訓練營培訓作業---泛型隊列模板

今天完成了設計思路和無頭結點的實現.

1.很高興這個泛型和我在寫棧計算器的時候想的問題有所相似,當時用棧寫計算器,想到要處理數據類型問題,當然可以寫兩個類型棧,但是這不適用,無法解決數據通用,於是當時想到的是用字元數組來解決,但是對於負號的處理卻增加了難度.後來想到的是void*,結合這次作業提到了c++泛型模板,於是了解了一下.

2.關於泛型的理解,引用博文的解釋就是一種抽象數據類型,是面向對象的補充和發展.不知所云,感覺就是可以利用空指針不指向確定的類型,這樣將他賦值給另一指針變數時由系統對他進行類型轉換,從而符合被賦值的類型.這樣在使用的時候再對空指針進行相應的類型轉換就可以了.

3.在寫這個作業的時候,參考了馮俊華髮的泛型鏈表,通過對這個的理解從而找到泛型隊列的思路,關鍵在於如何處理數據的管理,那麼可以通過堆來動態的管理數據,加上空指針進而管理數據的類型,這樣就解決了泛型.所以這個作業的核心部分是靈活應用空指針,結點中的存放的是數據的地址.

4.關於函數介面問題和選擇何種隊列實現方式:直接想到的就是通過傳某種值確定使用哪種實現方式,似乎也沒有其他方法可以選擇了.

5.在這過程還了解了memcpy()和strdup()兩個函數

1)第一個解決了我關於內存塊複製的問題,原本是打算寫一個內存複製的函數,形參為某塊內存頭和尾的兩個指針通過掃描這段的內容來解決泛型隊列中數據賦值的問題,但有了這個函數顯得更方便.

2)字元串複製,這個函數方便在會隱式的使用malloc為指針動態分配空間.

--------------------------------感想收穫-------------------------------

培訓完後,發現不會的知識又多了一大塊,其他人看到單片機原理圖,電路圖都可以說出一二,我卻一臉懵逼,只好加把勁了,要不然被勸退就GG了.

--------------------------------存在問題-------------------------------

1.單片機知識為零.

2.學習的經歷不夠,容易疲勞,學習的時候要提高效率,爭取靜下心來,事半功倍,這樣就有多餘的時間可以休息了.


推薦閱讀:

TAG:C編程語言 | 演算法與數據結構 |