C語言,在大學裡普遍被當作第一門程式語言,用於編程入門,以及數據結構和算法的教學。
雖然比C++要容易點,但因為指針的存在,C其實就是個高級的彙編:(
並不是很好學,尤其是它的壓軸章節:指針。
大概分為這麼幾個階段:
1,會寫冒泡排序。
說明適應了程式語言從0開始數數,
已經會使用兩層的for循環,
並且會使用printf列印排序結果,
適應了計算機不會選擇最大的和逆序最多的數字,而只能使用「笨辦法」的特點。
2,會寫快速排序。
說明會使用二分法和遞歸,
初步理解了數組的名字、首地址和指針的關係,
初步了解了算法的時間複雜度。
3,會寫二叉樹。
能夠把一堆亂序的數字添加到二叉樹,然後遍歷出來時是有序的,即排序二叉樹。
說明理解了二級指針,基本了解了指針的內涵,並能熟練使用遞歸。
這時的C水平,已經可以做一個只支持加減乘除和括號的簡易計算器了。
鍊表,自然也寫得了。
4,懂一點彙編。
不能返回局部變量的指針,字符串緩衝區溢出會覆蓋返回地址,指針到底是什麼,這類的問題,從彙編碼的角度很好解釋。
如果沒有彙編基礎而去硬記,就會比較苦惱。
5,熟悉作業系統,網絡編程,多進程,多線程,異步事件機制。
6,和項目相關的算法,第三方庫,etc.
單純的C並沒什麼用,沒有相關的算法,還是什麼都寫不出來。
拿到需求而寫不出來,實際上並不是不會C的語法知識,而是不熟悉需要背後的算法。
冒泡排序,也是算法,可以用C寫,也可以用其他語言寫。只不過高級語言的數組類,都自帶排序函數。