unix下c語言的學習路線。
工具篇「公欲善其事,必先利其器」。程式設計是一門實踐性很強的工作,在你以後的學習或工作中,你將常常會與以下工具打交道, 下面列出學習c語言程式設計常常用到的軟體和工具。
(一)作業系統
在unix或linux系統中學習c很方便,所以在開始您的學習旅程前請先選擇乙個unix或linux作業系統。
目前可供個人免費使用的unix或linux系統有freebsd、redhat linux、suse linux等,而且在安裝包中還提供很多實用的工具,如:gcc, make等。
如果您一直使用windows,身邊又沒有多餘的機器安裝unix,則可以使用vmware,通過vmware安裝虛擬系統。
(二)編譯工具
目前絕大多數unix或lnux系統都提供cc或gcc編譯器,最簡單的cc命令格式如下:
cc -o hello hello.c
在unix shell環境中敲入上面的**會將hello.c程式編譯成可執行檔案hello。
make 工具如 gnu make、system v make 和 berkeley make 是用來組織應用程式編譯過程的基本工具,但是每個 make 工具之間又有所不同。
大部分unix和linux程式都是通過執行make來編譯的。make工具會讀取乙個包含指令的檔案(這個檔案的名字通常都是 makefile 或 makefile,不過後文中我們統一稱之為 「makefile」),並執行各種操作來編譯程式
(三)除錯工具
最簡單的除錯工具:為你的程式新增列印語句
在你對程式的執行機制有了一定的了解後,你可以實用一些工具幫助你進行除錯,當然你得學習一下這些工具得使用,如:dbx,gdb等。
還有一些記憶體工具可以幫你查詢記憶體洩漏或緩衝區溢位等一些問題,如:memwatch,yamd等
(四) 其他工具
1. vi或vim
當然在實際工作中,你可能需要乙個整合編碼環境或乙個功能強大的圖形化編輯工具。
2.netterm
最著名的網路終端軟體之一,可以使用它方便的連線到主機系統中。
3.secure shell
乙個支援ssh協議得客戶端工具,多數情況下用來連線linux系統。
書籍篇「書是人類進步得階梯」。學習一門新的知識,當然要選擇幾本適合自己得書籍,下面介紹一些我自己學習c語言使用過的書籍:
1.《c primer plus》
2.《the c programming_language》
3.《c 專家程式設計》
4.《c缺陷與陷阱》
5.《unix環境高階程式設計》
推薦理由:既然是unix環境下c程式設計,就不得不說說unix程式設計書籍。stevens先生的《unix環境高階程式設計》是我竭力推薦的,也是我的案頭必備(如果對網路程式設計有興趣的,可以學習一下stevens先生的《unix網路程式設計》兩卷,如果覺得還不過癮,可以再看看《tcp/ip詳解》三卷)。
6.《計算機程式設計藝術》
過程篇1.學習c語法
語法的學習對於乙個具有程式設計底子的來說,就很輕鬆了;即使你以前沒有學習過其他程式語言,我相信有2個星期,你也能輕鬆搞定。
需要注意的是,不要太糾纏於語言的細節,比如:運算子優先順序與結合性的問題等。
2.學習c標準庫
ctype.h:字元處理
math.h:數學庫
stdio.h:標準i/o庫
stdlib.h:通用工具庫
string.h:字串處理
time.h:時間和日期
3.攻克c的難點
c語言宣告:
c語言的宣告確實讓我覺得恐怖,比較晦澀難懂,而且宣告的形式和使用的形式還類似。比如如下的宣告恐怕就連很多熟悉c多年的程式設計師也不是一眼就能看出來的:
char * const * (*next)();
那麼有沒有一種好的記憶方法或規則來搞清楚呢,好像沒有,如果有的話也不是這樣折磨人了。不過可以看看《c專家程式設計》第三章的內容,或許你會有所收穫。
也只能多學多練了,所謂熟能生巧嘛,希望這個問題不要在你的心靈上留下陰影。
陣列與指標:
陣列與指標的關係,在標準中並沒有作很詳細的規定,而且好多c入門的書籍在這個問題上並沒有給出很詳細的說明,所以會給人造成很多誤解。
對於這個問題,你可以參考《c缺陷與陷阱》4.5節和《c專家程式設計》第4,9,10章,相信你這裡面的內容搞透徹,以後就不會再被這個問題搞迷惑。
指標與記憶體:
如果你以後編寫規模較大的程式,你可能發現這個問題可能會是你最大的煩惱,而且可能會是你消耗最多除錯時間的事項。
c版本的問題:
你得特別小心該問題,最好不要在你的程式中混合使用不同版本c的特性,否則會給你帶來很迷惑的問題。如果一定要用,你最好清楚自己在做什麼。
還有一些其他c中的難點和容易錯誤的地方,可以學習前人的一些經驗。以下是乙個c faq的鏈結位址,相信在這篇文件中有你需要的大部分問題的解決方法。
4. unix環境程式設計
學習了以上內容之後,我相信,你就可以進行unix環境程式設計了。不過你可能需要對作業系統理論有一點點的了解,這樣學起來會比較輕鬆一些。
unix環境程式設計,你應該著重io和程序兩大塊內容。《unix環境高階程式設計》中對unix環境程式設計有著非常詳細且深入的論述,而且書中有大量實用性例子程式,不過可能得花上幾個月得時間,好好啃一啃了。
在紮實掌握以上內容,不代表你得c語言學習支路已經完成,相反,才剛剛開始。以後你需要用學到得知識去解決大量不同實際問題,在不斷得實踐過程中,你會近一步加深對c的理解。有了以上基礎之後,你會發現,在實踐過程中需要的其他知識,你會非常快速的掌握。
windows程式設計師的學習路線
1.當然要熟悉下c語言了 入門可以選用潭浩強的 《c程式設計》(當然最好能讀c programming language)特別要對其中的指標,結構體等東西一定要搞清楚了(要學好的很好至少要花費乙個月時間) 為什麼要從c開始呢:<1> c好學 <2> 大多數的作業系統核心部分是用c開發的 <3> c的效率高且語言成熟
2.在1的基礎之上一定要認真學習一下資料結構 對c++程式設計師來說良好的資料結構可以讓乙個程式設計師很輕鬆的完成程式設計 糟糕的資料結構可以把乙個程式設計師累死 推薦書籍:嚴蔚敏的《資料結構(c語言版)》或北京大學的一本中c++版的資料結構 書中說到的每個主體在我們的程式設計中都會用到 認真學好會對你的以後的c++程式設計有太多的好處 (3個月時間)
3.學好了2之後可以學習下《c++ program design》這本書初步介紹了c++和如何使用c++寫出windows下的程式(要學好至少要花費3個月時間)
4.在3的基礎之上可以讀一本叫《windows 95 程式設計》(它的最新版本是programming windows)這是一相windows程式設計的領域的不朽之作(3個月時間) 通過2和3的學習你已經成為了乙個可以設計windows程式的程式設計師了 要想更好的設計windows程式設計 一定要借助框架結構不可 為什麼:框架結構可以加快我們程式設計的速度 雖然使用框架使得我們的程式的效率低了那麼一點 但隨著當今計算機的運算能力的提公升 你不會感覺到這一點點的效能損失的反而會因為你使用的框架結構而使你的程式設計加快了速度 使用框架結構才算乙個真正的vc++程式設計師
5.在4的基礎之上可以看一些簡單的mfc程式設計的書比如《visual c++入門教程》之類的圖書 這可以使你能寫出一些帶有通用控制項的mfc程式 (1個月時間)
6.在5的基礎之上你已經可以很快開發乙個軟體了 但不了解mfc框架執行機制是很不好的 了解mfc的執行機制可以使你以後的mfc程式設計工作做的更好 推薦書籍侯傑的《深入淺出mfc》 但這本書真的不適合初學者當你有了一定的開發經驗以後這本書對你來說確實很好 若你很熟悉windows下的sdk程式設計並打算或已經開始使用mfc進行軟體開發 那這本書對你來說再好不過了 (2個月時間)
7.在6的基礎之上你可以看下這本書《vc++技術內幕》由潘愛民譯的 推薦看原著(3個月)
8.在以上基礎之上為了更好的使用vc++這個工具 推薦看一下《vc++6.0寶典》(3個月) 從開發工具的角度講這本書寫的很好
9.為了更好的工作可以參考一下vc++程式設計百例
10.之後你可以看一下《windows核心程式設計》 這本書很好的講解了windows的程式設計 對你寫系統程式很有好處的 推薦看原版
11.只了解其形不算真正的了解 之後還要認真的讀一下windows的核心原始碼 相信wrk 很容易找到的 可以配合《深入解析windows作業系統》《windows核心原理與實現》和《windows核心情景分析》
13.要做到乙個好的程式設計師一定要對驅動程式有所了解所以寫乙個檔案驅動之類的東東是很有必要的
14.經過以上各步的學習你完全成為乙個優秀的windows程式設計師了(前提是每一步要學好)
15.漏了一些重要的東東 編譯原理 彙編及 組成原理 和設計模式等也是很重要的東東 只有學好了這些才能明白語言為什麼要這樣組織才能高效。
C語言學習路線
1.了解c語言 c語言歷史 c語言特點 2.演算法 什麼是演算法 演算法有哪些 3.資料型別 c語言包含的資料型別 變數的命名規則 常量 變數 4.運算子與表示式 什麼是運算子 什麼是表示式 5.輸入輸出函式 字串的輸入輸出 6.選擇程式結構 if語句,if else語句 使用 switch語句 使...
C語言與C 學習路線
有人說 c生萬物,程式設計之本 這一點都沒有錯!c語言是最接近計算機的語言,很多時間,我們都會發現,c語言是非常有必要學習的。c語言物件導向程式設計思想 類的封裝,構造和析構 靜態成員 物件管理 類的構造 有參建構函式 無參構造 拷貝構造 預設建構函式 和析構 物件動態管理 友元函式 友元類 操作符...
UNIX Linux下C語言的學習路線
一 工具篇 公欲善其事,必先利其器 程式設計是一門實踐性很強的工作,在你以後的學習或工作中,你將常常會與以下工具打交道,下面列出學習c語言程式設計常常用到的軟體和工具。1 作業系統 在unix或linux系統中學習c很方便,所以在開始您的學習旅程前請先選擇乙個unix或linux作業系統,目前可供個...