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

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

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

這周過的真快,真快,有趣的事情說兩遍。今天早上參加了五一兼職培訓,為了再也不用手機看書眼睛累,為了我的平板加油↖(^ω^)↗。話說這個兼職雖然路上打的被老司機坑了50,那也只能認栽了,吃一塹長一智吧。今天的培訓老師給我上了學校里學不到的一課。印象記得很深的幾句話:在學校里掛科了可以重來,人生走錯了一步不能重來。在學校里遲到早退可以任性,在職場遲到早退免談。在學校錯誤有他人分擔,在職場錯誤要自己負責。隨時投資自己,注重積累人脈。頓時覺得學校就是學生的象牙塔,充滿美好幻想。而社會就是人生百態,上演千奇百怪。

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

1.這兩天終於把C陷阱和指針看來了2/3了,但是發現後面的越來越接近計算機的程序如何運行的問題,諸如連接器等還不是很理解。

2.關於聲明,定義的細枝末節:

(1)如果一個函數在聲明,定義之前被使用,那麼會默認其返回類型為整型。

如果定義聲明之後,函數的返回值與被接受的變數的類型不一致那麼編譯器是會報錯的。

(2)如果一個函數的形參沒有char short

float類型的話可以在聲明的時候省略不行形參,但是不提倡,這樣寫不好。

(3)同一個外部變數在兩個不同的文件中被聲明為兩種不同的類型這是很危險的,因為C語言並不檢查這種錯誤,這回導致結果是不可預知的。

(4)對於字元指針和字元數組是兩種不同的類型,在外部變數的定義中有所區別,所以聲明相同變數名的字元數組和字元指針是錯誤的。

3.有關內存:

(1)一個程序將系統分給其運行的內存塊分為4個區域。

代碼區,存放程序的各個代碼塊。

全局數據區,存放全局數據和靜態數據

堆區,存放程序的動態數據

棧區,存放程序的局部數據

4.連接器對C語言的一些問題也檢測不出,所以可以使用Lint 程序。對於lint程序有一個叫做PC-Lint的代碼靜態分析工具,能識別並報告C語言中的編程陷阱和格式缺陷,警告使用空指針,冗餘的代碼,識別沒有被適當檢驗的數組下標,報告未被初始化的變數等等,這麼做可以降低軟體除錯和軟體項目開發的成本。

5.訓練營第一次培訓培訓了鏈表,得出以下:

(1)對於一種抽象的數據類型有三部分組成:數據對象,數據關係,數據操作。

(2)有一個值得注意的就是要在必要的地方判斷指針是否為空指針。

(3)不能忽視了在將申請的空間賦給一個指針時,要檢查好申請的空間是否成功。

(4)頭結點和頭指針是不一樣的:前者的數據域為空,後者的數據域有東西。

(5)鏈表有一個缺點就是無法快速訪問,為了解決這個問題可以使用跳錶來解決。

(6)對於數組和鏈表的選取可以:如果數據的增刪操作比讀取操作多的那就用鏈表,反之則為數組。

(7)也可以對數組進行realloc,並且realloc開闢的空間一定是連續的,並且重新分配空間的時候如果原本的空間不夠那麼會新開闢一塊連續的空間,把原本的數據整體複製到這塊新申請的內存,並釋放原本的內存。

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

C語言確實是編程的基礎語言,之所以說它是基礎,那是因為許許多多的語言是緣於它而進行相關的演變的,所以學好學懂C語言,那麼對於其他語言也就可以迎刃而解了。

九層之台始於壘土,所以說C語言的底層知識還是很重要的,雖然有些知識晦澀難懂,但是早懂晚懂都是要懂的,恩。

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

1.不要疲勞學習,休息好了學習的效率才會更高,恩。

2.不要厭倦深究底層的知識,雖然這個過程有點讓人崩潰。

3.多打碼多打碼多打碼,這個星期注重理論較多,但是真的不能忘了打碼。


推薦閱讀:

提升自己,比什麼都重要!
職場人最重要能力是什麼?能力圈法則幫你打造核心競爭力(三維樹)
【職場】職場從不相信懦弱,適者才能生存

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