C语言的学习路线
語言學(xué)習(xí)建議
1、概念的正確性
2、動手能力
3、閱讀優(yōu)秀的程序段
4、大量練習(xí),面試題
必讀:
the c programming laugue 翻譯不好
second edition
brian w kernighan
C語言程序設(shè)計 郵電
指針:
C和指針
編程纂言 梁勤新 匯編 王爽
進(jìn)階
C專家編程
C陷阱與缺陷
C科學(xué)與技術(shù)
C課程講解思路
1、基本概念
2、數(shù)據(jù)類型
3、輸入輸出專題
4、流程結(jié)構(gòu)
5、數(shù)組 地址 地址偏移
6、指針
7、函數(shù)
8、構(gòu)造類型
9、動態(tài)內(nèi)存的管理d
10、調(diào)試工具調(diào)試技巧(gdb跟蹤,調(diào)試工程中的錯誤、make)
11、常用庫函數(shù)
1、基本概念
C語言特點(diǎn)
1、C語言 直接訪問計算機(jī)內(nèi)部地址
2、用于解決大多數(shù)應(yīng)用領(lǐng)域中的問題
3、語法限制不太嚴(yán)格 自由度大
有并只有一個主函數(shù)
工具篇
“公欲善其事,必先利其器”。編程是一門實(shí)踐性很強(qiáng)的工作,在你以后的學(xué)習(xí)或工作中,你將常常會與以下工具打交道, 下面列出學(xué)習(xí)C語言編程常常用到的軟件和工具。
(一)操作系統(tǒng)
在UNIX或Linux系統(tǒng)中學(xué)習(xí)C很方便,所以在開始您的學(xué)習(xí)旅程前請先選擇一個UNIX或Linux操作系統(tǒng)。
目前可供個人免費(fèi)使用的UNIX或Linux系統(tǒng)有FreeBSD、RedHat Linux、SUSE Linux等,而且在安裝包中還提供很多實(shí)用的工具,如:gcc, make等。
如果您一直使用Windows,身邊又沒有多余的機(jī)器安裝UNIX,則可以使用VMware,通過VMware安裝虛擬系統(tǒng)。
(二)編譯工具
目前絕大多數(shù)Unix或Lnux系統(tǒng)都提供CC或GCC編譯器,最簡單的cc命令格式如下:
cc -o hello hello.c
在unix shell環(huán)境中敲入上面的代碼會將hello.c程序編譯成可執(zhí)行文件hello。
make 工具如 GNU make、System V make 和 Berkeley make 是用來組織應(yīng)用程序編譯過程的基本工具,但是每個 make 工具之間又有所不同。
大部分UNIX和Linux程序都是通過運(yùn)行make來編譯的。make工具會讀取一個包含指令的文件(這個文件的名字通常都是 makefile 或 Makefile,不過后文中我們統(tǒng)一稱之為 “makefile”),并執(zhí)行各種操作來編譯程序
(三)調(diào)試工具
最簡單的調(diào)試工具:為你的程序添加打印語句
在你對程序的運(yùn)行機(jī)制有了一定的了解后,你可以實(shí)用一些工具幫助你進(jìn)行調(diào)試,當(dāng)然你得學(xué)習(xí)一下這些工具得使用,如:dbx,gdb等。
還有一些內(nèi)存工具可以幫你查找內(nèi)存泄漏或緩沖區(qū)溢出等一些問題,如:memwatch,yamd等
(四) 其他工具
Unix下文本編輯器。主要靠一堆命令來編輯文本文件,學(xué)Unix編程最好熟悉并熟練使用vi編輯器。
當(dāng)然在實(shí)際工作中,你可能需要一個集成編碼環(huán)境或一個功能強(qiáng)大的圖形化編輯工具。
提供一個中文的vim在線手冊:http://vcd.gro.clinux.org/
2.netterm
最著名的網(wǎng)絡(luò)終端軟件之一,可以使用它方便的連接到主機(jī)系統(tǒng)中。
3.Secure shell
一個支持ssh協(xié)議得客戶端工具,多數(shù)情況下用來連接linux系統(tǒng)。
書籍篇
“書是人類進(jìn)步得階梯”。學(xué)習(xí)一門新的知識,當(dāng)然要選擇幾本適合自己得書籍,下面介紹一些我自己學(xué)習(xí)C語言使用過的書籍:
1.《C primer plus》
推薦理由:適合作為入門書和基本函數(shù)查詢得參考資料。本書最新版為第五版,以ANSI C99為標(biāo)準(zhǔn)詳細(xì)介紹了C語言。
2.《The C programming_Language》
推薦理由:C語言之父得作品權(quán)威性毋庸置疑。雖然書籍出版時間比較老,好像也沒更新,不過仍不失為經(jīng)典書籍,網(wǎng)上有這本書得英文電子版提供下載。
3.《C 專家編程》
推薦理由:本書可以幫助有一定經(jīng)驗的C程序員成為C編程方面的專家,最關(guān)鍵的是本書寓教于樂,讓你充分享受編程的樂趣。
4.《C缺陷與陷阱》
推薦理由:書中所揭示的知識能幫助您繞過C語言自身得陷阱和缺陷,減少代碼中許多常見的Bug。
5.《unix環(huán)境高級編程》
推薦理由:既然是UNIX環(huán)境下C編程,就不得不說說UNIX編程書籍。Stevens先生的《unix環(huán)境高級編程》是我竭力推薦的,也是我的案頭必備(如果對網(wǎng)絡(luò)編程有興趣的,可以學(xué)習(xí)一下Stevens先生的《UNIX網(wǎng)絡(luò)編程》兩卷,如果覺得還不過癮,可以再看看《TCP/IP詳解》三卷)。
6.《計算機(jī)編程藝術(shù)》
推薦理由:算法大師得嘔心瀝血之作。計劃出版五卷書,目前好像已出版3卷。對算法有興趣得可以研究一下。
過程篇
1.學(xué)習(xí)C語法
語法的學(xué)習(xí)對于一個具有編程底子的來說,就很輕松了;即使你以前沒有學(xué)習(xí)過其他編程語言,我相信有2個星期,你也能輕松搞定。
需要注意的是,不要太糾纏于語言的細(xì)節(jié),比如:運(yùn)算符優(yōu)先級與結(jié)合性的問題等。
2.學(xué)習(xí)C標(biāo)準(zhǔn)庫
ANSI C庫把函數(shù)分為不同的組,每個組都具有與之相關(guān)的頭文件。C語言標(biāo)準(zhǔn)庫相對于其他語言,比如C++,Java來說是非常短小精悍的,但首先應(yīng)著重對以下庫進(jìn)行學(xué)習(xí):
ctype.h:字符處理
math.h:數(shù)學(xué)庫
stdio.h:標(biāo)準(zhǔn)I/O庫
stdlib.h:通用工具庫
string.h:字符串處理
time.h:時間和日期
如果想了解完成的ANSI C庫,你可以購買相關(guān)的書籍,這些書籍一般會詳細(xì)介紹每個函數(shù)的用戶和一些注意點(diǎn);當(dāng)然你也可以登陸http://www.dinkumware.com/manual … amp;page=index.html獲取ANSI C庫詳細(xì)信息。
3.攻克C的難點(diǎn)
C語言聲明:
C語言的聲明確實(shí)讓我覺得恐怖,比較晦澀難懂,而且聲明的形式和使用的形式還類似。比如如下的聲明恐怕就連很多熟悉C多年的程序員也不是一眼就能看出來的:
char * const * (*next)();
那么有沒有一種好的記憶方法或規(guī)則來搞清楚呢,好像沒有,如果有的話也不是這樣折磨人了。不過可以看看《C專家編程》第三章的內(nèi)容,或許你會有所收獲。
也只能多學(xué)多練了,所謂熟能生巧嘛,希望這個問題不要在你的心靈上留下陰影。
數(shù)組與指針:
數(shù)組與指針的關(guān)系,在標(biāo)準(zhǔn)中并沒有作很詳細(xì)的規(guī)定,而且好多C入門的書籍在這個問題上并沒有給出很詳細(xì)的說明,所以會給人造成很多誤解。
對于這個問題,你可以參考《C缺陷與陷阱》4.5節(jié)和《C專家編程》第4,9,10章,相信你這里面的內(nèi)容搞透徹,以后就不會再被這個問題搞迷惑。
指針與內(nèi)存:
如果你以后編寫規(guī)模較大的程序,你可能發(fā)現(xiàn)這個問題可能會是你最大的煩惱,而且可能會是你消耗最多調(diào)試時間的事項。
C版本的問題:
你得特別小心該問題,最好不要在你的程序中混合使用不同版本C的特性,否則會給你帶來很迷惑的問題。如果一定要用,你最好清楚自己在做什么。
還有一些其他C中的難點(diǎn)和容易錯誤的地方,可以學(xué)習(xí)前人的一些經(jīng)驗。以下是一個c FAQ的鏈接地址,相信在這篇文檔中有你需要的大部分問題的解決方法。
http://c-faq-chn.sourceforge.net/
4. UNIX環(huán)境編程
學(xué)習(xí)了以上內(nèi)容之后,我相信,你就可以進(jìn)行unix環(huán)境編程了。不過你可能需要對操作系統(tǒng)理論有一點(diǎn)點(diǎn)的了解,這樣學(xué)起來會比較輕松一些。
Unix環(huán)境編程,你應(yīng)該著重IO和進(jìn)程兩大塊內(nèi)容?!禪nix環(huán)境高級編程》中對Unix環(huán)境編程有著非常詳細(xì)且深入的論述,而且書中有大量實(shí)用性例子程序,不過可能得花上幾個月得時間,好好啃一啃了。
在扎實(shí)掌握以上內(nèi)容,不代表你得C語言學(xué)習(xí)支路已經(jīng)完成,相反,才剛剛開始。以后你需要用學(xué)到得知識去解決大量不同實(shí)際問題,在不斷得實(shí)踐過程中,你會近一步加深對C的理解。有了以上基礎(chǔ)之后,你會發(fā)現(xiàn),在實(shí)踐過程中需要的其他知識,你會非??焖俚恼莆铡?/p>
Windows程序員的學(xué)習(xí)路線
1.當(dāng)然要熟悉下C語言了 入門可以選用潭浩強(qiáng)的 《C程序設(shè)計》(當(dāng)然最好能讀C Programming Language)特別要對其中的指針,結(jié)構(gòu)體等東西一定要搞清楚了(要學(xué)好的很好至少要花費(fèi)一個月時間) 為什么要從C開始呢:<1> C好學(xué) <2> 大多數(shù)的操作系統(tǒng)核心部分是用C開發(fā)的 <3> C的效率高且語言成熟
2.在1的基礎(chǔ)之上一定要認(rèn)真學(xué)習(xí)一下數(shù)據(jù)結(jié)構(gòu) 對C++程序員來說良好的數(shù)據(jù)結(jié)構(gòu)可以讓一個程序員很輕松的完成程序設(shè)計 糟糕的數(shù)據(jù)結(jié)構(gòu)可以把一個程序員累死 推薦書籍:嚴(yán)蔚敏的《數(shù)據(jù)結(jié)構(gòu)(C語言版)》或北京大學(xué)的一本中C++版的數(shù)據(jù)結(jié)構(gòu) 書中說到的每個主體在我們的程序設(shè)計中都會用到 認(rèn)真學(xué)好會對你的以后的C++程序設(shè)計有太多的好處 (3個月時間)
3.學(xué)好了2之后可以學(xué)習(xí)下《C++ PROGRAM DESIGN》這本書初步介紹了C++和如何使用C++寫出Windows下的程序(要學(xué)好至少要花費(fèi)3個月時間)
4.在3的基礎(chǔ)之上可以讀一本叫《Windows 95 程序設(shè)計》(它的最新版本是Programming Windows)這是一相Windows程序設(shè)計的領(lǐng)域的不朽之作(3個月時間) 通過2和3的學(xué)習(xí)你已經(jīng)成為了一個可以設(shè)計Windows程序的程序員了 要想更好的設(shè)計Windows程序設(shè)計 一定要借助框架結(jié)構(gòu)不可 為什么:框架結(jié)構(gòu)可以加快我們程序設(shè)計的速度 雖然使用框架使得我們的程序的效率低了那么一點(diǎn) 但隨著當(dāng)今計算機(jī)的運(yùn)算能力的提升 你不會感覺到這一點(diǎn)點(diǎn)的性能損失的反而會因為你使用的框架結(jié)構(gòu)而使你的程序設(shè)計加快了速度 使用框架結(jié)構(gòu)才算一個真正的VC++程序員
5.在4的基礎(chǔ)之上可以看一些簡單的MFC程序設(shè)計的書比如《Visual C++入門教程》之類的圖書 這可以使你能寫出一些帶有通用控件的MFC程序 (1個月時間)
6.在5的基礎(chǔ)之上你已經(jīng)可以很快開發(fā)一個軟件了 但不了解MFC框架運(yùn)行機(jī)制是很不好的 了解MFC的運(yùn)行機(jī)制可以使你以后的MFC程序設(shè)計工作做的更好 推薦書籍侯杰的《深入淺出MFC》 但這本書真的不適合初學(xué)者當(dāng)你有了一定的開發(fā)經(jīng)驗以后這本書對你來說確實(shí)很好 若你很熟悉Windows下的SDK程序設(shè)計并打算或已經(jīng)開始使用MFC進(jìn)行軟件開發(fā) 那這本書對你來說再好不過了 (2個月時間)
7.在6的基礎(chǔ)之上你可以看下這本書《VC++技術(shù)內(nèi)幕》由潘愛民譯的 推薦看原著(3個月)
8.在以上基礎(chǔ)之上為了更好的使用VC++這個工具 推薦看一下《VC++6.0寶典》(3個月) 從開發(fā)工具的角度講這本書寫的很好
9.為了更好的工作可以參考一下VC++程序設(shè)計百例
10.之后你可以看一下《Windows核心編程》 這本書很好的講解了Windows的編程 對你寫系統(tǒng)程序很有好處的 推薦看原版
11.只了解其形不算真正的了解 之后還要認(rèn)真的讀一下Windows的內(nèi)核源碼 相信WRK 很容易找到的 可以配合《深入解析Windows操作系統(tǒng)》《Windows內(nèi)核原理與實(shí)現(xiàn)》和《Windows內(nèi)核情景分析》
12.其它一些東東《COM原理》(潘愛民) OpenGL D3D VC的數(shù)據(jù)庫編程 圖形圖像 音視頻處理和網(wǎng)絡(luò)都要有所了解和會使用
13.要做到一個好的程序員一定要對驅(qū)動程序有所了解所以寫一個文件驅(qū)動之類的東東是很有必要的
14.經(jīng)過以上各步的學(xué)習(xí)你完全成為一個優(yōu)秀的Windows程序員了(前提是每一步要學(xué)好)
15.漏了一些重要的東東 編譯原理 匯編及 組成原理 和設(shè)計模式等也是很重要的東東 只有學(xué)好了這些才能明白語言為什么要這樣組織才能高效。
推薦閱讀
●網(wǎng)站推薦
●軟件推薦
●計算機(jī)學(xué)習(xí)教程合集
●點(diǎn)擊加入QQ群874514813交流學(xué)習(xí),免費(fèi)獲取達(dá)內(nèi)-黑馬全套培訓(xùn)資料
總結(jié)
- 上一篇: 一念求全,万绪纷起
- 下一篇: 软件版本 ——测试版