天天看點

c語言使用未初始化的記憶體怎麼解決_C語言學習的三大難題!

提到C語言很多初學者都覺得,學到中間就進行不下去了,尤其是學到指針記憶體管理的部分,沒寫過幾個野指針、沒有debug過記憶體越界那都不叫完整的“人生”啊!

c語言使用未初始化的記憶體怎麼解決_C語言學習的三大難題!

今天小編就和大家一起讨論一下c語言學習道路上的三大難題。

★   記憶體布局  ★

提到c語言的記憶體操作方式,就繞不開指針。

指是針公認最難了解的概念,也是讓很多C語言初學者選擇放棄的直接原因。

軟體開發/設計行業有這麼一句話:沒有什麼是不能通過增加一個抽象層解決的。

這句話很對……但抽象層并不是免費的。這點就很少有人想過了:一旦你和什麼東西之間被加上了一個抽象層,那你就一定得在每次通路它時受到某種限制、或者付出某些代價。

而對C來說,數組就是一個指向一片記憶體區域的指針……它并不去封裝這個概念;恰恰相反,它鼓勵你去了解藏在表象背後的東西。

于是乎,舉例來說,在大量文本中搜尋比對某個模式的字元串(即strstr函數),如果C用3秒能搜完,其它語言再快可能也得9秒。因為每和一個字元比較,其它語言都要多兩次索引越界與否的檢查動作。

當然,這個好處并不是白撿到的。C語言使用者是以而付出的代價,就是防不勝防的緩沖