QG之魔鬼訓練營系列:第二周周記

這是訓練營第七篇日記,日期:2016年4月24日

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

這一周過去,有種說不出的失望。因自己學習能力不夠強不能更快理解知識而失望,因為部門小夥伴進入下半學期後工作積極性下降而失望,因為自己不能高效率完成事情而失望。失望歸失望,有句話這麼說階段不能跨越,但可以縮短。失望再所難免,又何妨,累了睡一覺又是精神百倍;倦了,和宿友聽聽情感電台吹吹水又是頭腦清醒。過了這周讓我意識到後面的訓練營的日子註定是越來越艱辛,聽說有的人已經打了退堂鼓,但於我,那是絕對不可能的,面對疾風,只會知恥後勇,越戰越勇。↖(^ω^)↗,I can I up。

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

這周的學習可以分為三部分總結:

第一部分:C語言基礎知識的補充及深入理解

(1)數據的輸入:gets,scanf,輸入的結束標誌以及對最後一個鍵入的處理。

(2)數據的存儲:

1 從位的角度進一步理解了數據類型可以表示的範圍以及在不同編譯器上的區別。

2 從原碼補碼反碼的角度理解有符號和無符號整數之間的區別,並且如何判斷數據是否溢出。

3 了解到程序會將操作系統分給其運行的內存塊分為代碼區,全局數據區,棧區,堆區共四個區域。同時,變數依據作用域和生存期會被分配到不同的存儲區域。全局變數,靜態變數會被分到全局數據區,局部變數存放在棧區,動態變數存放在堆區,代碼塊存放在代碼區。

4 對於指針的存儲又有些特別,雖然指針變數佔據的內存會根據編譯器的位數來劃分,但是出於歷史原因和便於許多開發基於32bits所以會給指針變數分配4個位元組。

5 對於動態內存的申請要記得釋放,並且要防止內存泄露。

(3)變數的聲明定義:

1 在C陷阱中了解到原來函數的聲明在形參沒有char short float的情況下是可以省略不寫形參的。

2 進一步了解了函數的聲明和定義出現在所用函數的前面後面在返回值上的區別。

3 對於外部變數在不同文件中可以聲明,但是只能有一個定義。

4 對於外部變數的聲明要注意類型的一致性,並且字元指針和字元數組不是同一種類型,因為兩種被分配的類存不同。

(4)運算符 優先順序 求值順序:

對於優先順序和求值順序有很大的區別,優先順序關係到的是表達式的結合性,求值順序與順序點相關,理解好這兩個有助於減少某些表達式的副作用的發生。也減少未定義的結果,操作的出現,減少debug和程序調試的成本。

第二部分:訓練營培訓之鏈表

(1)抽象數據類型,人人都可以定義,但是必須要具備三樣東西:數據對象,數據關係,數據操作。當有了這三樣就可以定義滿足自己需要的抽象數據類型。

(2)對於malloc,realloc進一步了解到動態分配內存是分配連續的內存,並且這塊內存的首個存儲的是這塊內存的信息,並且動態重新分配內存是成塊成塊的。

(3)之前總是糾結於到底使用數組好還是使用鏈表好,其實兩者各有所長,適時而用。如果對於數據的插入刪除多於讀取操作那麼就可以優先考慮鏈表,反之則為數組。

第三部分:相關工具的使用

(1)便於還原舊版本的git工具:需要記住它的指令操作是如何的,這需要反覆的使用。

(2)便於存儲代碼的github工具:這中在雲端存儲代碼有助於遠程的開發。

(3)搜索引擎google:雖然可以get到時新的資料,但是個人的學習情況來說用baidu是可以滿足的,CSDN就有些精華帖可供學習。

--------------------------------一周總結-------------------------------

這周總的說來補得知識還可以,但是還要再加把勁,在深入理解知識點的時候要堅信這是有用的,雖然學起來會有點讓人焦頭爛額。但是對於理論知識還是要多多結合實際操作,就好比一個帖子里說的,不要迷信書本,權威,回帖;要迷信CPU,編譯器,調試器,運行結果。但是截至這周我所有提前完成的學習就這麼回到和大家一樣的進度了,這也就意味著接下來我要再顧及平時學習的情況下,打牢C知識,雙管齊下,挑戰不小呀。

---------------------------存在問題及未來規劃--------------------------

1.對於打碼的時間安排較少,還是要再想想辦法,~(≧▽≦)/~。

2.雖然有很努力的學習C知識,但是進度還是很慢,而且訓練營發布的任務應當立即完成,儘可能不能被其他事情耽擱了。

3.對於訓練營交的東西要及時複習,並且對於有趣的點要及時深入了解,不要一拖再拖,這個真的不能拖,要不然就趕不上他人了。


推薦閱讀:

TAG:C編程語言 | 演算法與數據結構 | 提升個人能力 |