C語言從零開始(一)
寫在前面
毫無疑問,大部分資深程式設計師的程式設計生涯都是從C語言開始的。依稀還記得大一時候自學C語言時的情景,當時剛上大一,博主為了追求心儀的妹子就在完全不懂得C語言是什麼的情況下報名參加下學期的計算機二級(C語言)考試。這一行為果斷引來了女神關注,效果頗佳。然而在仔細瞭解了C語言之後,才發現比想象中的困難了一些。再加上大二的學長們各種渲染C語言有多難學,於是心中開始打鼓。
大一的寒假,我從圖書館借來了三本C語言入門的書,開始自學。其中自然有大名鼎鼎的譚浩強老人家的書。記得當時安裝Turb C就花了好幾天的時間,幾近崩潰邊緣。後來終於用一個寒假的時間把基礎知識都學會了,又做了幾套計算機二級的卷子,連蒙帶猜的通過了第二學期的考試。從此就算是和程式設計結了緣。
當年的妹子如今已經杳無音信,而C語言的程式碼我一寫就寫了十年。
這十年裡,IDE從最簡單的Turb C到VC 6.0再到VS2005、2008、2010、2013…開發方向從嵌入式到Windows開發再到Linux伺服器開發,當年學習C語言那份熱情依然還在。後來又在公司擔任了新員工試用期專案培訓的工作,每年都要把變數的指標和指標變數這樣的東西反覆講。看著他們一個個獨立完成了自己的試用期專案,博主成就感爆棚。
最近幾年,一直堅持利用業餘時間幫助網友解決C語言學習過程中的各種疑難問題。每天至少花費2小時時間回覆郵件。隨著來信越來越多,越發感到力不從心。況且大部分朋友的問題都是類似的,重複回答實在無趣,希望更多的朋友與我交流。
下面進入正題
1. 教材選擇
不想給大家一長串書名,那樣也許就直接抹殺了你學習C語言的興趣,這裡重點推薦三本。
《C程式設計》譚浩強
![1240](http://upload-images.jianshu.io/upload_images/145902-d44ecc16f685bc8d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
很多大牛都不推薦譚浩強的《C語言程式設計》,但我不這麼認為。這本書雖然講的不那麼到位但作為初學者從它入門還是挺合適的。最重要的是,網上大部分初級網友都是以它為基礎進行交流的,有了它更容易融進各種論壇的討論。
《C程式設計語言》 Brian W.Kernighan | Dennis M.Ritchie
![1240](http://upload-images.jianshu.io/upload_images/145902-d965c4a273fe1b2a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
這本書是C語言之父Dennis參與編寫的,雖然不厚,但有些思想講得比較到位。建議初學者學習。
如果你想學習C/C++可以來這個群,首先是三三零,中間是八五九,最後是七六六,裡面有大量的學習資料可以下載。
《C Primer Plus》
![1240](http://upload-images.jianshu.io/upload_images/145902-6e8dad6740188798.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
這本書是非常經典的教材,每個知識點都介紹的非常到位。可以說這是入門級的選手的終結教材。如果想學好C語言並在後面有更大的發展,這本書必須要看。它能幫你打下堅固的程式設計基礎。
學習好這本書之後,學校裡的各種考試和小競賽就不在話下了。接下來,你該開始自己的進階之路了。
2. IDE選擇
如今,Turb C肯定是已經永遠地退出歷史舞臺了,但初學者還是要選擇一款合適的IDE才能方便的上手。
GCC + vim
很多學校的實驗室都用的Linux系統,建議大家從vim開始編寫最初的程式碼。
編寫好後執行下面程式碼:
$ gcc -c main.c
$ gcc -o main main.o
$ ./main
![1240](http://upload-images.jianshu.io/upload_images/145902-bf3b728426757ddf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Code::Blocks
這是一個輕量級的IDE,對於初學者而言,這是不二選擇。
![1240](http://upload-images.jianshu.io/upload_images/145902-529667ce311f2a4f.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
可以從這裡下載你需要的版本
VS 2013
無疑這是C語言開發最牛X的工具,然而這裡不建議初學者使用。由於Microsoft自己制定了很多自己關於開發的規則,初學者會發現課本上的程式碼原封不動的敲在上面卻報出莫名其妙的錯誤。
![1240](http://upload-images.jianshu.io/upload_images/145902-dace27905e3b0b19.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
不過,當你擁有一定C語言基礎的時候,VS的學習一定是必不可少的。
3. 實踐
程式設計是一門非常注重實踐的學科,如果你不去親自敲程式碼的話,那你永遠也學不會。而博主也更願意在郵件中針對具體的程式設計問題和大家討論。
這裡推薦兩個適合初學者程式設計練習的線上系統。
已經入門的朋友可以前去練習,有什麼問題我們一起討論。
4. C語言知識結構
![1240](http://upload-images.jianshu.io/upload_images/145902-6bc811053fdf809e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
相關文章
- 從零開始學C語言pdfC語言
- 從零開始學C語言 第3版pdfC語言
- 從零開始——GO語言基礎語法Go
- 從零開始學習C++之if判斷語句C++
- 用C++從0開始開發自己的程式語言C++
- 從零開始學習C++(0)C++
- 從零開始
- 從 0 開始實現程式語言(一):手寫 jsonParserJSON
- 從零開始開發一個 WebpackWeb
- 不怕從零開始,只怕從未開始!
- 從零開始寫一個ExporterExport
- 易語言陣列 ,索引從 1 開始。陣列索引
- 從零開始實現一個RPC框架(零)RPC框架
- 從零開始學 Python 之基礎語法Python
- 從零開始學習C++之遞推C++
- 從零開始學習C++(1-1)C++
- 從零開始仿寫一個抖音App——開始APP
- 從零開始學五筆(一):概述
- 【從零開始擼一個App】PKCEAPP
- 【從零開始擼一個App】KotlinAPPKotlin
- 從零開始學Electron筆記(一)筆記
- 從零開始的PHP開發逆天路——語法PHP
- 從零開始完成一個Android JNI開發Android
- 從零開始學PythonPython
- flutter 從零開始-1Flutter
- 從零開始寫一個node爬蟲(一)爬蟲
- 從零開始實現一個RPC框架(一)RPC框架
- 從零開始,開發一個 Web Office 套件(11):支援中文輸入法(or 其它使用輸入法的語言)Web套件
- 從零開始的Java RASP實現(一)Java
- 從零開始實現放置遊戲(一)遊戲
- 從零開始的爬蟲專案(一)爬蟲
- 從零開始設計一個部落格
- 從零開始搭建一個 hexo 部落格。Hexo
- flutter之從零開始搭建(一)之 BottomNavigationBarFlutterNavigation
- 從零開始搭建一個mock服務Mock
- 從零開始React專案架構(一)React架構
- 從零開始搭建一個vue專案Vue
- 一分鐘開始持續整合之旅系列之:C 語言 + Makefile
- go語言如何入門?從一個簡單例子開始學起Go單例