欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
漫談C語(yǔ)言及如何學(xué)習C語(yǔ)言

云風(fēng)最近寫(xiě)了一篇博客《C語(yǔ)言的前世今生》。作為長(cháng)期使用C語(yǔ)言開(kāi)發(fā)網(wǎng)絡(luò )游戲服務(wù)器的程序員,云風(fēng)是有理由寫(xiě)這樣一篇文字,不過(guò)還是感覺(jué)談的不夠深入,C語(yǔ)言在業(yè)界使用的現狀沒(méi)有怎么描寫(xiě),有些意猶未盡。

在這里想比較系統的談?wù)剛€(gè)人對C語(yǔ)言學(xué)習方式方法的理解。分別按照書(shū)籍、實(shí)驗環(huán)境搭建、網(wǎng)絡(luò )資源來(lái)分別介紹,希望能寫(xiě)的比較完整全面一些,給想學(xué)習C語(yǔ)言的朋友一個(gè)有價(jià)值的參考。

為什么要學(xué)習C語(yǔ)言?

為什么要學(xué)習、使用C語(yǔ)言?為什么要學(xué)習一個(gè)可能比自己都歲數大的編程語(yǔ)言?

我在前面如何學(xué)習編程語(yǔ)言的博客文章http://sunxiunan.com/?p=1597 里提到,選擇一門(mén)編程語(yǔ)言,“為什么而學(xué)”這個(gè)目的是最重要的,目的不明確就沒(méi)法學(xué)好。這也是為什么很多學(xué)生朋友在大學(xué)里必修C語(yǔ)言卻覺(jué)得沒(méi)學(xué)明白的原因。因為學(xué)習的目的不明確,學(xué)習當然也沒(méi)有動(dòng)力。還有一個(gè)原因是C語(yǔ)言是工程實(shí)踐性很強的語(yǔ)言,它不是來(lái)自某個(gè)研究所某個(gè)大學(xué)學(xué)院,而是實(shí)實(shí)在在從項目需要中產(chǎn)生,伴隨著(zhù)Unix的興起而流行,語(yǔ)義簡(jiǎn)明清晰,功能強大而不臃腫,簡(jiǎn)潔而又不過(guò)分簡(jiǎn)單,實(shí)在是居家旅行工作學(xué)習必備之良友。

C語(yǔ)言相比C++的優(yōu)點(diǎn)之一就是最小驚訝原則,一是一二是二,不會(huì )在私底下產(chǎn)生一些莫名其妙的額外產(chǎn)物。用C++做個(gè)例子,比如這樣一個(gè)函數原型void PassWithClassValue(COneClass clsParam1),稍微了解C++的朋友都會(huì )知道,如果你沒(méi)有實(shí)現COneClass的拷貝構造函數,編譯器會(huì )好心的幫你實(shí)現一個(gè),而且在調用這個(gè)函數PassWithClassValue的時(shí)候,偷偷地調用拷貝構造函數產(chǎn)生一個(gè)臨時(shí)對象作為參數傳遞,對于某些情況,比如編寫(xiě)操作系統這類(lèi)必須優(yōu)化性能的情景下,這些自以為是的東西是非常邪惡的事情。

C語(yǔ)言本身只提供必要的語(yǔ)言特性,其它復雜一點(diǎn)功能如文件處理、數學(xué)計算等等都以庫函數方式提供,甚至連malloc、free這種“必須有”的功能,也是以標準庫函數的方式提供,而不是作為C語(yǔ)言核心出現。在偉大的著(zhù)名的無(wú)所不包的《K&R》開(kāi)頭部分就提到了,for其實(shí)可以通過(guò)while來(lái)完成,只不過(guò)for可以寫(xiě)的更簡(jiǎn)潔,言外之意,對于C語(yǔ)言for其實(shí)不是必要的。跑題一點(diǎn)說(shuō),在其它程序語(yǔ)言中Lua可以說(shuō)繼承了C語(yǔ)言簡(jiǎn)潔的設計哲學(xué),甚至連continue這種幾乎必備的關(guān)鍵字都一直拒絕加入,在Lua的maillist以及wiki里都提到過(guò)continue這個(gè)問(wèn)題,Lua語(yǔ)言維護者認為continue對于Lua而言不是必要的,也不考慮在后續版本中添加這個(gè)關(guān)鍵字。這種簡(jiǎn)潔哲學(xué)也讓C語(yǔ)言的可移植性、便攜性特別優(yōu)秀,也使得很多嵌入式系統依然使用C語(yǔ)言作為主要編程工作語(yǔ)言。

Java語(yǔ)言有一個(gè)口號:“一次編寫(xiě),處處運行”,就是跨平臺這個(gè)噱頭。實(shí)際上C語(yǔ)言從早期開(kāi)始就幾乎達到了“一次編寫(xiě),處處編譯”,在A(yíng)NSI在1989年統一了C語(yǔ)言標準以后(稱(chēng)之為C89),只要特定平臺上的編譯器完整實(shí)現了C89標準,而且你的代碼沒(méi)有使用某些特殊的擴展(GCC以及微軟都有自己的編譯器特定擴展),那么代碼一定可以編譯通過(guò),再實(shí)現一下操作系統相關(guān)的函數庫,C語(yǔ)言的移植就是很簡(jiǎn)單的事情??梢杂肔ua作為例子,Lua本身是完全遵循C89標準,沒(méi)有使用任何特定擴展,這也保證了有C語(yǔ)言編譯器的平臺,都可以編譯使用Lua??梢跃幾g運行C語(yǔ)言的硬件平臺可以從A排到Z,真是非常有意思的事情。

C語(yǔ)言也是一個(gè)比較少見(jiàn)的應用領(lǐng)域極為廣泛的語(yǔ)言。比如編寫(xiě)操作系統這種高難問(wèn)題,只有C++、匯編語(yǔ)言可以做到。C語(yǔ)言可以編寫(xiě)服務(wù)器端軟件如Apache、Nginx,或者編寫(xiě)GUI程序,如GTK。大多數程序語(yǔ)言的第一版是通過(guò)C語(yǔ)言實(shí)現,借助前面提到的“一次編寫(xiě)處處編譯”,最大的保證了這些程序語(yǔ)言的可移植性。在Web開(kāi)發(fā)領(lǐng)域,C語(yǔ)言的應用相對較少,這也是一種取舍的結果,Web開(kāi)發(fā)需要使用PHP、Ruby、Python這樣的動(dòng)態(tài)語(yǔ)言,可以快速上線(xiàn)快速修改,可以最大程度滿(mǎn)足用戶(hù)時(shí)時(shí)變化的需求,這也是C語(yǔ)言的弱項。如果把程序語(yǔ)言的應用領(lǐng)域從硬件到管理軟件、Web程序做一個(gè)很粗略從下到上的排列,C語(yǔ)言適合領(lǐng)域是比較底層靠近硬件的部分,而新興語(yǔ)言比較偏重于高層管理或者Web開(kāi)發(fā)這種相對貼近最終用戶(hù)的領(lǐng)域。比較流行的混合開(kāi)發(fā)模式是使用C語(yǔ)言編寫(xiě)底層高性能部分代碼或后臺服務(wù)器代碼,而使用動(dòng)態(tài)語(yǔ)言如Python做前端開(kāi)發(fā),充分發(fā)揮它們各自的優(yōu)勢力量。

提到C語(yǔ)言的缺點(diǎn),常常是它缺少這種或者那種特性,比如有人建議加入GC,有人建議加入并行或者并發(fā)支持,有人提到?jīng)]有一個(gè)比較完整的類(lèi)似C++的異常策略。這些特性有的可以通過(guò)引入第三方庫來(lái)實(shí)現,但C語(yǔ)言的設計哲學(xué)其實(shí)決定了它不會(huì )像C++那樣“非常強大”。即使引入了某些人期望的特性,依然會(huì )是某些人喜歡某些人不喜歡的情形,現在的功能對于C語(yǔ)言應用領(lǐng)域來(lái)說(shuō)已經(jīng)夠用,其它特性可以通過(guò)特定程序語(yǔ)言實(shí)現,并且通過(guò)C API與C語(yǔ)言編寫(xiě)的程序進(jìn)行交互。任何一個(gè)工匠都不可能只使用一個(gè)工具完成他的工作,不同工具結合起來(lái)才能更快更好的完成任務(wù)。

提到C API,也稍微介紹一下,我們知道windows操作系統的api也好,Linux的系統api也好,或者是想給Ruby、Python編寫(xiě)擴展模塊,C語(yǔ)言形式的函數定義都是唯一的選擇。C語(yǔ)言就好像是一個(gè)中間層或者是膠水,如果想把不同編程語(yǔ)言實(shí)現的功能模塊混合使用,C語(yǔ)言是最佳的選擇。

提了這么多關(guān)于C語(yǔ)言的好處,那么學(xué)習C語(yǔ)言是否適合就看你自己的判斷了,例如要進(jìn)行一個(gè)嵌入式項目,或者需要進(jìn)行服務(wù)器端開(kāi)發(fā),或者寫(xiě)一個(gè)性能相關(guān)的組件等等,C語(yǔ)言都是比較好用的選擇。另外也可以在C++的使用過(guò)程中有意的使用C語(yǔ)言的思考方式,汲取C語(yǔ)言簡(jiǎn)潔明快清晰地設計思路,對編程設計水平會(huì )有很大的提高。

C語(yǔ)言學(xué)習方法

在前面http://sunxiunan.com/?p=1597 曾經(jīng)提到過(guò)一個(gè)比較系統學(xué)習一門(mén)新的編程語(yǔ)言的方式,C語(yǔ)言學(xué)習也可以按照類(lèi)似的順序:閱讀參考書(shū),閱讀代碼,編寫(xiě)調試實(shí)際程序,上網(wǎng)參與討論,研究高級話(huà)題。

學(xué)習語(yǔ)言的開(kāi)始一般是閱讀參考書(shū)。我建議選擇幾本非常經(jīng)典的好書(shū),仔細完整反復閱讀幾遍,“書(shū)讀百遍其義自現”。選擇C語(yǔ)言學(xué)習的好處是,這幾本書(shū)基本上完整涵蓋了C語(yǔ)言編程領(lǐng)域的方方面面,不會(huì )像C++那樣,即使讀完一堆書(shū)還是有些糊涂,依然有這樣那樣難懂的陷阱。

1,參考書(shū)籍

在豆瓣上列了一個(gè)書(shū)單,大家可以直接參考http://book.douban.com/doulist/636329/

在下面簡(jiǎn)單點(diǎn)評一下,閱讀順序最好參照列出的順序。

《The C Programming Language》http://book.douban.com/subject/1230004/

如果你只想買(mǎi)一本書(shū)學(xué)習C語(yǔ)言,只需要買(mǎi)這一本就夠了。如果你經(jīng)費足夠,建議你多買(mǎi)幾本,辦公室、家里都放上一本,隨手都可以翻翻。用三個(gè)詞語(yǔ)來(lái)形容它就是:經(jīng)典!經(jīng)典!經(jīng)典!這本薄薄的只有二百多頁(yè)的小書(shū)涵蓋了C語(yǔ)言的方方面面,前無(wú)古人而且后無(wú)來(lái)者,任何溢美之詞都不足以形容它。

《The C Programming Language》(后面稱(chēng)為 K&R)里面包含了一個(gè)簡(jiǎn)單的語(yǔ)法解析器,包含了malloc如何實(shí)現,包含了一個(gè)完整的操作系統目錄瀏覽程序,這些程序的實(shí)用性極高,可以這樣說(shuō),如果學(xué)習任何一門(mén)語(yǔ)言能夠自己獨立動(dòng)手實(shí)現以上的功能,基本上就可以算是入門(mén)了。K&R書(shū)里面每段都蘊含著(zhù)非常值得探究的軟件開(kāi)發(fā)工程實(shí)踐經(jīng)驗,如果沒(méi)有一定的開(kāi)發(fā)經(jīng)驗,其實(shí)是看不出來(lái)這些冰山下面的內容的,比如開(kāi)頭一章就提出用寫(xiě)完整代碼這種方式來(lái)教學(xué),而在書(shū)中那些C語(yǔ)言的陷阱或者可能出問(wèn)題的地方,都有提到,但是由于篇幅所限,寫(xiě)的非常簡(jiǎn)約,很難讓人一下就看懂。我正在完整的逐字逐句的閱讀此書(shū),希望能稍作注解,寫(xiě)幾篇博客分享一下。

《C程序設計語(yǔ)言(第2版·新版)》http://book.douban.com/subject/1139336/

這是K&R的中文譯本,可以先從中文譯本看起,然后再讀一遍英文原版,既可以學(xué)習英文,又可以體會(huì )原文那種簡(jiǎn)約優(yōu)美的風(fēng)格。

《C陷阱與缺陷》http://book.douban.com/subject/2778632/

《C專(zhuān)家編程》http://book.douban.com/subject/2377310/

這兩本書(shū)也是學(xué)習及使用C語(yǔ)言的朋友必備的兩本書(shū),比如《C專(zhuān)家編程》,專(zhuān)門(mén)用兩三個(gè)章節詳細介紹C語(yǔ)言中數組與指針的不同之處,這兩本書(shū)在某種程度上算是對K&R略過(guò)的地方做了詳細補充,強烈推薦。

《C語(yǔ)言參考手冊》http://book.douban.com/subject/2132084/

這是最后一本強烈推薦你最好買(mǎi)回家作為案頭書(shū)必備的參考書(shū)。前面幾本書(shū)或者稍顯簡(jiǎn)略,或者專(zhuān)注某個(gè)特定專(zhuān)題,都不適合遇到問(wèn)題時(shí)翻查。這本《C語(yǔ)言參考手冊》可以看作是C語(yǔ)言編程的《新華字典》,全面而權威。里面還涵蓋了C99的內容,緊跟時(shí)代潮流。

下面幾本書(shū)都可以作為交叉參考,也都很有價(jià)值,也是建議大家都買(mǎi)下來(lái),好書(shū)如朋友,日久彌新,像是我推薦的這幾本書(shū)在douban或者amazon上評分都非常高,而且反復再版。

《C和指針》http://book.douban.com/subject/1229973/

指針的重要性如何,學(xué)過(guò)C語(yǔ)言(或者C++)的朋友都知道,這本書(shū)更是把指針拔高到了與C語(yǔ)言平起平坐的地位,其實(shí)也是從頭開(kāi)始介紹,作為教學(xué)參考書(shū)也是可以的。

《C標準庫》http://book.douban.com/subject/3775842/

這本書(shū)是專(zhuān)門(mén)介紹C語(yǔ)言的標準庫如何實(shí)現的,比如malloc算法,用標準的C語(yǔ)言該如何寫(xiě)?strlen這個(gè)函數應該如何實(shí)現?盡管書(shū)中不少代碼與真實(shí)的C標準庫相差很多(由于標準庫需要考慮性能優(yōu)化,很多函數有一些特定的trick),但是絕對值得參考。

《你必須知道的495個(gè)C語(yǔ)言問(wèn)題》 http://book.douban.com/subject/3422332/

這本書(shū)其實(shí)就是C-FAQ的印刷版本,C-FAQ在各種編程語(yǔ)言的FAQ中可以稱(chēng)得上質(zhì)量一流。如果你想應聘或者招聘C語(yǔ)言相關(guān)程序員,這本書(shū)一定要參考。

《Linux C編程一站式學(xué)習》http://book.douban.com/subject/4141733/

這本書(shū)是基于特定操作系統Linux來(lái)介紹C語(yǔ)言編程,可作為計算機相關(guān)專(zhuān)業(yè)的教科書(shū)或入門(mén)參考書(shū),也是書(shū)單里面唯一一本國人原創(chuàng )的編程書(shū)籍,非常難得。書(shū)中幾乎所有內容都在網(wǎng)上直接公開(kāi),針對讀者的意見(jiàn)進(jìn)行修改,這也是非常難得的一種開(kāi)放態(tài)度。非常推薦大家買(mǎi)一本。

學(xué)習C語(yǔ)言,一定不能只讀書(shū),應該動(dòng)手練習完成書(shū)里面的項目需求(比如編寫(xiě)一個(gè)目錄瀏覽器)以及每章的練習題目。這就需要有可以實(shí)驗的環(huán)境,下面針對不同操作系統簡(jiǎn)單做一下介紹。

2,動(dòng)手實(shí)驗環(huán)境搭建

也沒(méi)有調查過(guò),不知道現在學(xué)校里學(xué)習C語(yǔ)言是不是依然跟著(zhù)譚浩強老師用TurboC2.0編程,如果還是這個(gè)組合的話(huà),那就太差勁了,趕快拋開(kāi)它們。

下面主要介紹不同操作系統平臺下的集成編程環(huán)境,基于初學(xué)者以及我個(gè)人喜好,就不推薦大家命令行下用vim編程了,直接上IDE。

Windows系統下推薦大家使用Code::blocks這個(gè)軟件。這個(gè)軟件最大優(yōu)點(diǎn)是自帶了基于mingw的GCC以及GDB,只要下載70M左右軟件包,就可以完整支持C++、C語(yǔ)言編程了。各種功能(比如調試功能)也很強大,版本更新也比較快。注意下載選擇名字有mingw的文件,比如最新版本是codeblocks-10.05mingw-setup.exe(版本也許有所不同)。

主頁(yè):http://www.codeblocks.org/

如果需要做Windows操作系統的開(kāi)發(fā),可以下載Visual C++ 2010 Express。

因為Code::Blocks不包含Windows編程頭文件(實(shí)際是因為沒(méi)有Windows SDK),無(wú)法編寫(xiě)Windows操作系統相關(guān)的界面應用程序或者服務(wù)類(lèi)程序。而VC++Express自帶了這些頭文件以及編程庫,雖然功能稍微簡(jiǎn)陋,但對于練習使用基本夠用。

主頁(yè):http://www.microsoft.com/express/windows/

對于計算機專(zhuān)業(yè)的學(xué)生朋友,建議大家使用Linux操作系統,或者更詳細一點(diǎn)是使用Xubuntu操作系統作為桌面,使用Netbeans和GCC這個(gè)組合(當然也可以選擇Code::Blocks)。在Xubuntu下可以通過(guò)apt-get install build-essential這個(gè)命令安裝gcc相關(guān)程序,已經(jīng)可以在Terminal下編譯C語(yǔ)言程序了,但為了使用方便,大家可以選擇Netbeans的C++支持包,在Netbeans網(wǎng)站上就能下載。

主頁(yè):http://netbeans.org/features/cpp/index.html

如果使用蘋(píng)果Mac系統,毫無(wú)疑問(wèn)XCode就是編程的絕佳選擇,XCode可以在蘋(píng)果開(kāi)發(fā)者網(wǎng)站上免費下載,在IPhone SDK中也包含了XCode。

主頁(yè):http://developer.apple.com/technologies/tools/xcode.html

如果手頭沒(méi)有合適的編程環(huán)境,還需要實(shí)驗一些簡(jiǎn)單的代碼,可以用http://codepad.org/ 提供的服務(wù),在線(xiàn)編寫(xiě)運行代碼。

另外建議大家申請一個(gè)github.com的賬號,在gist.github.com可以保存自己的練習代碼,就不需要隨身帶著(zhù)U盤(pán)了。

3,網(wǎng)絡(luò )資源

如果想用十分鐘時(shí)間了解一下C語(yǔ)言的來(lái)龍去脈、前世今生,維基百科這個(gè)頁(yè)面http://en.wikipedia.org/wiki/C_%28programming_language%29 是最佳選擇。

從維基百科可以看到,C語(yǔ)言1972年由Dennis Ritchie設計的命令式、結構化范式編程語(yǔ)言。類(lèi)型為靜態(tài)的弱類(lèi)型,需要顯式定義。最新國際標準為C99。設計上主要受到了B、ALGOL68、匯編語(yǔ)言、PL/I、FORTRAN的影響,C語(yǔ)言也影響了大量編程語(yǔ)言,如C++、Objective-C、C#、Java、Go、PHP、Python等等(個(gè)人覺(jué)得受C影響很大的是PHP,基本上有C編程基礎的程序員,很容易就能上手PHP了,除了PHP的OO部分)。

在維基百科條目中有很大篇幅介紹了作者認為C語(yǔ)言缺失的特性,比如面向對象、多線(xiàn)程、GC、異常處理等等,當然這有些吹毛求疵,如果需要這些特性,完全可以用其它程序語(yǔ)言。另外一個(gè)介紹的重點(diǎn)是“未定義行為”,有些我們認為理所當然的結果,其實(shí)在C語(yǔ)言標準中并沒(méi)有明確定義,假定這些行為應該如何,當程序使用另外的編譯器或者不同版本編譯器編譯運行,都可能有bug產(chǎn)生。

接下來(lái)維基百科條目談到了C語(yǔ)言的用處,必須承認盡管現在編程語(yǔ)言成百上千,能稱(chēng)之為“系統級”的少之又少,新興語(yǔ)言中只有Go還能稱(chēng)得上?,F在大規模軟件項目中完全選用C語(yǔ)言可能性不大,但是核心部分完全可以用C搭建,相對C++開(kāi)發(fā)工具的高昂價(jià)格,C語(yǔ)言相關(guān)的免費輔助開(kāi)發(fā)軟件非常豐富,比如splint,valgrind,不少核心庫經(jīng)過(guò)長(cháng)期使用也都非常穩定。

由于C語(yǔ)言廣泛支持各種平臺以及編譯器相對成熟可靠,不少編程語(yǔ)言選擇C語(yǔ)言作為一個(gè)中間層,比如Glasgow Haskell編譯器就是這樣做的。

另一個(gè)可以找到大量C語(yǔ)言編程相關(guān)資料的地方是“美味書(shū)簽”,通過(guò)搜索特定關(guān)鍵字 (C + programming)就可以找到很多值得挖掘的資源http://delicious.com/search?p=c+programming

還可以參考dmoz.org的C語(yǔ)言分類(lèi)http://www.dmoz.org/Computers/Programming/Languages/C/ 相比美味書(shū)簽時(shí)效性能差點(diǎn),但是分類(lèi)比較系統,查找也要容易一些。

程序員往往是懶惰的,“拿來(lái)主義”、“拷貝主義”很流行也很有效,當對某個(gè)函數或者關(guān)鍵字不是很理解的時(shí)候,看看別人是怎么使用的,會(huì )非常有啟發(fā)性。這里介紹幾個(gè)常用的代碼搜索網(wǎng)站,最常用的是google的codesearch:http://codesearch.google.com ,可以通過(guò)不同條件及正則表達式搜索特定關(guān)鍵詞。另外可以參考維基百科上一個(gè)“帶有C語(yǔ)言示例的文章”分類(lèi),里面代碼寫(xiě)的也很不錯。還可以在github.com上搜索相關(guān)項目。在前面博客文章我還介紹了一個(gè)名為羅塞塔代碼的網(wǎng)站http://rosettacode.org/ 這個(gè)網(wǎng)站上可以找到不同程序語(yǔ)言針對某個(gè)問(wèn)題的解決方案,用于學(xué)習比較非常便利。

學(xué)習編程也需要大量閱讀名家經(jīng)典代碼,與學(xué)中文英文需要大量閱讀名著(zhù)一個(gè)道理,C語(yǔ)言編程優(yōu)質(zhì)項目那是“彩旗飄舞,人山人?!?,個(gè)人建議可以看看Lua、Sqlite、Nginx這些項目的代碼,代碼量不多,而且代碼質(zhì)量也都比較高。另外可以看看Linux內核代碼,坊間有不少書(shū)籍可以幫助解讀。關(guān)于如何很好的閱讀代碼,大家可以參考《Code Reading》這本書(shū)。

書(shū)看了幾本,代碼寫(xiě)了一些,也略微讀了讀其他人的代碼,就應該用C語(yǔ)言來(lái)完成真實(shí)工作中碰到的問(wèn)題,讓C語(yǔ)言真正成為你的瑞士軍刀。只有當你經(jīng)常使用C語(yǔ)言來(lái)進(jìn)行編程工作,經(jīng)常思考如何通過(guò)C設計一個(gè)優(yōu)雅高效的系統,才能更深刻的理解C語(yǔ)言設計哲學(xué)。

還可以到http://stackoverflow.com 參與回答問(wèn)題,瀏覽其他人的問(wèn)題解答來(lái)汲取知識,比如這篇http://stackoverflow.com/questions/2054939/char-is-signed-or-unsigned-by-default 就介紹了一個(gè)C語(yǔ)言關(guān)于char類(lèi)型的小陷阱。

C語(yǔ)言學(xué)習當中,有一些難點(diǎn)需要多加注意,如pointer與array的不同之處,復雜類(lèi)型定義如何解讀,如何正確使用預處理preprocessor以及宏定義。其實(shí)這些內容在前面書(shū)籍都是反復提到,如果按部就班學(xué)習下來(lái),應該不成問(wèn)題。

當C語(yǔ)言學(xué)習的差不多時(shí)候,還可以學(xué)習一門(mén)動(dòng)態(tài)語(yǔ)言,比如Lua或者Python,試著(zhù)在實(shí)際工作項目中混合使用動(dòng)態(tài)語(yǔ)言與C語(yǔ)言,一加一發(fā)揮出來(lái)的力量不僅僅是二,而是非常二(說(shuō)笑一下,哈哈)。

還有什么問(wèn)題,歡迎留言。

附錄

一些有用的C語(yǔ)言網(wǎng)絡(luò )資源:

C語(yǔ)言標準化組織ISO JTC1/SC22/WG14的主頁(yè),在這里可以找到ISO C的文檔:http://www.open-std.org/jtc1/sc22/wg14/

《The Development of the C Language》作者Dennis Ritchie,極為經(jīng)典的論文。 http://cm.bell-labs.com/cm/cs/who/dmr/chist.html

“C語(yǔ)言全景”這個(gè)網(wǎng)站內容很全面:http://www.softpanorama.org/Lang/c.shtml

Dan Saks在embedded.com上的專(zhuān)欄Programming Pointer ,里面文章很有深度,值得一讀。

http://www.lysator.liu.se/c/c-www.html 這也是一個(gè)C語(yǔ)言資源匯總頁(yè)面。

http://www.ioccc.org/index.html 混亂C語(yǔ)言代碼大賽,很著(zhù)名。

http://en.wikipedia.org/wiki/Underhanded_C_Contest 另外一個(gè)C語(yǔ)言編程大賽,主要面向黑客。

comp.lang.c以及c.moderated這兩個(gè)討論組推薦訂閱,相當于互聯(lián)網(wǎng)最大的C相關(guān)編程問(wèn)題論壇:

http://groups.google.com/group/comp.lang.c

http://groups.google.com/group/comp.lang.c.moderated

這里對C語(yǔ)言的各種bit操作做了收集整理,不少題目在面試時(shí)候經(jīng)常出現。http://graphics.stanford.edu/~seander/bithacks.html

臺灣的慣C達人Jserv博客,建議大家訂閱:http://blog.linux.org.tw/~jserv/

一些值得關(guān)注及研究的C語(yǔ)言相關(guān)項目:

TinyCC,被很多項目用作動(dòng)態(tài)編譯C語(yǔ)言的編譯器引擎:http://bellard.org/tcc/

GCC的標準庫實(shí)現:http://en.wikipedia.org/wiki/GNU_C_Library

Glib是GTK的底層輔助編程庫,與C標準庫是不一樣的,在C語(yǔ)言上實(shí)現了面向對象機制:http://en.wikipedia.org/wiki/GLib

dietlibc在前面博客文章介紹過(guò),C標準庫的另一種實(shí)現:http://www.fefe.de/dietlibc/

一些C語(yǔ)言編程時(shí)可以使用的工具軟件,幫你提高代碼質(zhì)量:

http://www.splint.org/

http://valgrind.org/

http://www.dwheeler.com/flawfinder/

PMD可用于檢測重復代碼 http://pmd.sourceforge.net/cpd.html

llvm的靜態(tài)分析項目 http://clang-analyzer.llvm.org/

C語(yǔ)言編程規范編程標準:

http://en.wikipedia.org/wiki/MISRA_C

http://www.eecs.harvard.edu/~ellard/CS50-96/programming-style.html

http://developers.sun.com/solaris/articles/secure.html

cert這個(gè)文檔國內有中文翻譯版本:https://www.securecoding.cert.org/confluence/display/seccode/CERT+C+Secure+Coding+Standard

http://www.cs.utah.edu/dept/old/texinfo/standards/standards_toc.html

C語(yǔ)言編程電子書(shū)及教程:

http://publications.gbdirect.co.uk/c_book/ 這一本寫(xiě)的非常詳細,你可以把它看成是類(lèi)似譚浩強版的教科書(shū)。

http://www.knosof.co.uk/cbook/cbook.html 這一本云風(fēng)曾經(jīng)推薦過(guò),相當深入的介紹了C99標準,深入細節時(shí)候需要讀讀。

http://www.duckware.com/bugfreec/index.html 這本書(shū)在網(wǎng)上流傳一個(gè)中文版本,《編寫(xiě)優(yōu)化、高效、無(wú)錯地代碼》,另外也有英文影印版《編程精粹》。

http://wangcong.org/blog/?page_id=196 作者王聰,也是相當hard geek,從兩個(gè)樣章看,包含了相當多的內容。

《C語(yǔ)言深度解剖》這本可以在百度文庫或google搜到,可以讀讀,有些參考性。

《C標準和實(shí)現》作者姚新顏,他的《深度探索C、C++》算是當年比較有深度的書(shū)籍,可惜已經(jīng)絕版了。這本書(shū)也可以在百度文庫搜到。這本書(shū)也比較值得讀。

良葛格C語(yǔ)言學(xué)習筆記 http://caterpillar.onlyfun.net/Gossip/CGossip/CGossip.html

C與C++的兼容性問(wèn)題 http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B

另一個(gè)文檔關(guān)于C與C++標準兼容性問(wèn)題:http://david.tribble.com/text/cdiffs.htm

C Elements of Stylehttp://www.oualline.com/books.free/style/index.html

《Linux安全編程》http://www.dwheeler.com/secure-programs/

《C Craft》電子版 http://crypto.stanford.edu/~blynn/c/

《The function pointer tutorials》函數指針教程。http://www.newty.de/fpt/index.html

C語(yǔ)言編程及Unix系統調用,想用C在Unix或者Linux編程的朋友可以參考。http://www.cs.cf.ac.uk/Dave/C/

優(yōu)化C、C++代碼 http://www.eventhelix.com/RealtimeMantra/Basics/OptimizingCAndCPPCode.htm

圖文并茂介紹C語(yǔ)言的指針 http://boredzo.org/pointers/

另外一篇介紹C語(yǔ)言?xún)?yōu)化的文章 http://www.prism.uvsq.fr/~cedb/local_copies/lee.html

一個(gè)C語(yǔ)言教學(xué)ppt http://www.slideshare.net/petdance/just-enough-c-for-open-source-programmers

一些Unix下C語(yǔ)言編程相關(guān)的文章 http://users.actcom.co.il/~choo/lupg/tutorials/index.html

Unix下如何建立靜態(tài)、動(dòng)態(tài)C語(yǔ)言函數庫 http://users.actcom.co.il/~choo/lupg/tutorials/libraries/unix-c-libraries.html

如何使用GDB http://users.actcom.co.il/~choo/lupg/tutorials/debugging/debugging-with-gdb.html

一些C語(yǔ)言編程技巧 http://users.bestweb.net/~ctips/

Advanced C programming,高級C語(yǔ)言編程,可以提高水平,非常有幫助 http://www.mpi-inf.mpg.de/departments/rg1/teaching/advancedc-ws08/literature.html

C語(yǔ)言問(wèn)答,這些題目也可用于面試 http://www.gowrikumar.com/c/

這篇日志發(fā)表于2010年06月29日 8:49 上午。 你可以訂閱該日志的所有評論通過(guò) RSS 2.0。 你可以發(fā)表評論,或者引用通告。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
AAuto快手編程的lua內核本質(zhì) aau
C語(yǔ)言廉頗老矣?java那么好用,為什么還要使用C這么古老的語(yǔ)言
C語(yǔ)言名稱(chēng)怎么來(lái)的?
從操作系統原理角度講述服務(wù)器技術(shù)(附贈書(shū))
搞編程語(yǔ)言是件能做一輩子的事兒 | 專(zhuān)訪(fǎng) ReScript 語(yǔ)言作者張宏波
最牛華人“程序員”邵中,全世界程序員的命運都可能因他而變
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久