一、工具篇
「公欲善其事,必先利其器」。程式設計是一門實踐性很強的工作,在你以後的學習或工作中,你將常常會與以下工具打交道, 下面列出學習c語言程式設計常常用到的軟體和工具。
1、作業系統
在unix或linux系統中學習c很方便,所以在開始您的學習旅程前請先選擇乙個unix或linux作業系統,目前可供個人免費使用的unix或linux系統有freebsd、redhat linux、suse linux等,而且在安裝包中還提供很多實用的工具,如:gcc, make等。
如果您一直使用windows,身邊又沒有多餘的機器安裝unix,則可以使用vmware、或是vbox等安裝虛擬系統。
2、編譯工具
目前絕大多數unix或lnux系統都提供cc或gcc編譯器,最簡單的cc命令格式如下:
cc -o hello hello.c
在unix shell環境中敲入上面的**會將hello.c程式編譯成可執行檔案hello。
3、make工具
如 gnu make、system v make 和 berkeley make 是用來組織應用程式編譯過程的基本工具,但是每個 make 工具之間又有所不同。
大部分unix和linux程式都是通過執行make來編譯的。
make工具會讀取乙個包含指令的檔案(這個檔案的名字通常都是 makefile 或 makefile,不過後文中我們統一稱之為 「makefile」),並執行各種操作來編譯程式。
4、除錯工具
最簡單的除錯工具:為你的程式新增列印語句,在你對程式的執行機制有了一定的了解後,你可以實用一些工具幫助你進行除錯,當然你得學習一下這些工具得使用,如:dbx,gdb等。
還有一些記憶體工具可以幫你查詢記憶體洩漏或緩衝區溢位等一些問題,如:memwatch,yamd等。
5、其他工具
1)vi或vim
當然在實際工作中,你可能需要乙個整合編碼環境或乙個功能強大的圖形化編輯工具。
2)secure shell/putty
乙個支援ssh協議得客戶端工具,多數情況下用來連線linux系統。
二、書籍篇
「書是人類進步得階梯」。學習一門新的知識,當然要選擇幾本適合自己得書籍,下面介紹一些我自己學習c語言使用過的書籍:stevens先生的《unix環境高階程式設計》是我竭力推薦的,也是我的案頭必備(如果對網路程式設計有興趣的,可以學習一下stevens先生的《unix網路程式設計》兩卷,如果覺得還不過癮,可以再看看《tcp/ip詳解》三卷)。
6.《計算機程式設計藝術》
推薦理由:演算法大師得嘔心瀝血之作。計畫出版五卷書,目前好像已出版3卷。對演算法有興趣得可以研究一下。
三、過程篇
1.學習c語法
語法的學習對於乙個具有程式設計底子的來說,就很輕鬆了;即使你以前沒有學習過其他程式語言,我相信有2個星期,你也能輕鬆搞定。
需要注意的是,不要太糾纏於語言的細節,比如:運算子優先順序與結合性的問題等。
2.學習c標準庫
ctype.h:字元處理
math.h:數學庫
stdio.h:標準i/o庫
stdlib.h:通用工具庫
string.h:字串處理
time.h:時間和日期
1)c語言宣告:
c語言的宣告確實讓我覺得恐怖,比較晦澀難懂,而且宣告的形式和使用的形式還類似。比如如下的宣告恐怕就連很多熟悉c多年的程式設計師也不是一眼就能看出來的:
char * const * (*next)();
那麼有沒有一種好的記憶方法或規則來搞清楚呢,好像沒有,如果有的話也不是這樣折磨人了。不過可以看看《c專家程式設計》第三章的內容,或許你會有所收穫。
也只能多學多練了,所謂熟能生巧嘛,希望這個問題不要在你的心靈上留下陰影。
2)陣列與指標:
陣列與指標的關係,在標準中並沒有作很詳細的規定,而且好多c入門的書籍在這個問題上並沒有給出很詳細的說明,所以會給人造成很多誤解。
對於這個問題,你可以參考《c缺陷與陷阱》4.5節和《c專家程式設計》第4,9,10章,相信你這裡面的內容搞透徹,以後就不會再被這個問題搞迷惑。
3)指標與記憶體:
如果你以後編寫規模較大的程式,你可能發現這個問題可能會是你最大的煩惱,而且可能會是你消耗最多除錯時間的事項。
4)c版本的問題:
你得特別小心該問題,最好不要在你的程式中混合使用不同版本c的特性,否則會給你帶來很迷惑的問題。如果一定要用,你最好清楚自己在做什麼。
還有一些其他c中的難點和容易錯誤的地方,可以學習前人的一些經驗。以下是乙個c faq的鏈結位址,相信在這篇文件中有你需要的大部分問題的解決方法。
4. unix環境程式設計
學習了以上內容之後,我相信,你就可以進行unix環境程式設計了。不過你可能需要對作業系統理論有一點點的了解,這樣學起來會比較輕鬆一些。
unix環境程式設計,你應該著重io和程序兩大塊內容。
《unix環境高階程式設計》中對unix環境程式設計有著非常詳細且深入的論述,而且書中有大量實用性例子程式,不過可能得花上幾個月得時間,好好啃一啃了。
在紮實掌握以上內容,不代表你得c語言學習之路已經完成,相反,才剛剛開始。以後你需要用學到得知識去解決大量不同實際問題,在不斷得實踐過程中,你會近一步加深對c的理解。有了以上基礎之後,你會發現,在實踐過程中需要的其他知識,你會非常快速的掌握
UNIX LINUX下 M 的問題
unix和windows間的文字檔案轉換 在用電報通訊的年代,人們發明了一種用7bits把常用的英文和標點編碼的方法 這就是至今還在計算機世界應用的ascii。電報機每當列印到一行結尾時便需要 跳進下一行 並 回到第一格 因此ascii有lf line feed,0 0a 和cr carriage ...
unix linux下主要的I O模型
unix linux下主要的4種i o模型 1,阻塞i o 最常用,最簡單,效率最低 2,非阻塞i o 可防止程序阻塞在i o操作上,需要輪詢。3,i o多路復用 允許同時對多個i o進行控制 4,訊號驅動i o 一種非同步通訊模型。阻塞i o模式 阻塞i o是最普遍使用的i o模式,大部分的程式使...
設定 Unix,Linux環境下的NLS LANG
設定 nls lang 變數 1 正確配置 lc all 引數 2 配置 telnet ssh securecrt 客戶端的字符集 linux中可以用locale命令來檢視 nls lang設定,如下例所示 root hxzg locale lang en us.utf 8 lc ctype en ...