A. 學習C語言 必看的書籍
Brian W.Kernighan, Dennis M.Ritchie,《C程序設計語言》
清華影印版、習題集;機械譯文版(新版、老版):習題集
這是迄今為止在所有程序設計語言書籍中最廣受尊敬的一部經典,是任何一名C程序員的必讀之作。因為出自C語言的設計者Dennis M.Ritchie和著名的計算機科學家Brian W.Kernighan之手,它被昵稱為「K&R C」。是它首先引入了「Hello World!」程序,這個程序幾乎成了後來任何一本入門性程序設計語言書籍中的第一個例子。
如同C語言本身簡潔緊湊而極具威力一樣,這本書輕薄短小而極富張力。通過簡潔的描述和典型的示例,它全面、系統、准確地講述了C語言的各個特性以及C程序設計的基
法,內容涵蓋基本概念、類型和表達式、控制流、函數與程序結構、指針與數組、結構、輸入與輸出、UNIX系統介面以及標准庫等內容。
簡潔清晰是這本書最大的特色。這本小書可以教給你許多比它厚幾倍的「大部頭」的知識。我認為那些動輒洋洋灑灑拼湊出好幾百頁乃至上千頁的技術作者應該好好向K&R學一學。對於中、高級程序員而言,如果希望迅速獲得C語言的嚴肅知識而又不願意多花費哪怕一丁點時間,這本書就是首選。
順便說一句,這本書的索引製作非常出色,極具實用價值,這可能首先要歸功於正文部分的簡明扼要。此外,盡管它看上去很像一本教程,但其實更是一本寫給專業程序員的指南。如果你不具備任何其他語言程序設計背景或基本的C語言知識,這本書也許並不適合用作你的C語言啟蒙讀物。
2. Perter Van Der LinDen,《C專家編程》
C專家編程
C語言是嚴肅的程序員語言,但這並不意味著C語言書籍必須板著面孔說教。在這本被C程序員昵稱為「魚書」(封面上有一條「醜陋的」腔棘魚)的著作中,作為SUN公司編譯器和操作系統核心開發組成員之一,Peter淋漓盡致地展示了其深厚的技術沉澱、豐富的項目經驗、高超的寫作技巧以及招牌式的幽默。在這部作品中,作者以流暢的文字、詼諧的筆法將逸聞典故、智慧和幽默自然地融入技術描述中,讀來宛若一本小說,極富趣味。 本書講述了C語言的歷史、語言特性、聲明、數組、指針、連接、運行時以及內存使用等知識,揭示了C語言中許多隱晦之處,尤其深入解析了聲明、數組和指針、內存使用等方面的細節。要想成為一名專家級C程序員,這些內容都是必須掌握的。和其他滿是抽象例子的C語言書籍不同,這本書充滿了大量的來自真實世界的C程序設計實例,它們對C程序員具有很高的參照價值。另外,每一章都以極富趣味的「輕松一下」收尾,而附錄A「程序員工作面試的秘密」則是任何語言的程序員在應聘工作前增強自信的好材料。
我懷疑真正的C專家可能用不著看這本書 ——從內容到組織方式到行文風格都決定了這是一本輕松愉快的「從菜鳥到高手」的進階讀本,所以,它理應擁有更廣泛的讀者群。初級程序員往往更需要熱情的鼓勵,在閱讀這本書的過程中,你定會深深地被作者對編程的激情所感染。
世間並無完美。我認為這本書的缺陷在於,和大多數平庸的C語言書籍一樣,它畫蛇添足地加入了一章關於C++的描述。在今天看來,這個描述既不全面也有失公允。不過,鑒於作者是在1994年從一名C程序員的角度去觀察C++,這一點也就不足為奇了。 3. Samuel P. Harbison, Guy L. Steele,《C語言參考手冊(第五版)》
影印版(機械工業出版社)、中文版(機械工業出版社)
在C語言參考手冊類書籍里,Samuel P. Harbison 和Guy L. Steele合著的C: A Reference Manual是非常出色的一本。這本手冊的第五版新增了對C99標準的介紹,以便滿足新時期C語言學習的需要。全書共分為兩大部分,第一部分專注於C語言特性,第二部分則全面討論了C標准庫。本書涵蓋C99、C89、傳統的C、所有版本的C運行庫以及編寫與C++兼容的C代碼等一切知識。
這本手冊只是中等厚度,但它比「比它更厚」的其他參考手冊更清晰地描述了C語言的現在和過去的方方面面。整本手冊技術細節描述精確,組織條理清楚,內容完備詳盡而又簡明扼要。可以這么說,它在廣度、深度和精度方面都是出類拔萃的。對於中、高級C程序員而言,這本手冊值得常備案頭,它幾乎肯定要比K&R的著作使用頻率更高。
4. David Hanson,《C語言介面與實現:創建可重用軟體的技術》,機械工業出版社
C語言介面與實現:創建可重用軟體的技術
C語言能夠歷經三十多年而不衰,一個重要的原因在於它的適應能力。在這「復用」、「面向對象」、「組件」、「異常處理」等先進機制漫天飛舞的年代,C語言仍然能夠憑借它小而優雅的語言特性,在相當程度上滿足現代軟體體系架構提出的要求。只不過,想要達到這個程度,必須要在C的應用功力上達到最高層次。在嵌入式、系統軟體以及對性能要求極高的系統開發中,開發人員必須達到這樣的層次,熟練掌握C語言的高級特性,才能夠同時滿足效率和靈活性、復用性的要求。可惜,雖然C語言技術圖書汗牛充棟,但是關注這個峰頂之域的作品卻是屈指可數。David Hanson的C Interfaces and Implementations就是個中翹楚。
David Hanson是業內大名鼎鼎的自由編譯器lcc的合作者。在這個項目中,他負責提供高度可復用的基礎架構。在不斷的實踐中,他完全使用ANSI C形成了一整套可復用組件庫。這套組件庫架構清晰,性能優異,而且提供了很多高級的特性,比如類Win32 SEH的異常處理機制、可移植的線程庫、高性能的內存池、豐富的可復用數據結構組件。David Hanson把他在創作這些組件的過程中所積累的心得以及對其源碼的精緻剖析原原本本地寫在了這本書里。這樣的著作,當然堪稱C語言領域里的銘心絕品。難怪已故著名技術作家Richard Stevens對此書贊不絕口,他說:「這本書中的技術,對於大部分C程序員來說,已經遺忘得太久了。」對於希望能在C語言應用上達到最高層次的核心程序員而言,這本書是難得的必讀之作。
其他除了以上四本書以外,我還樂意推薦Andrew Koenig的著作《C陷阱和缺陷》(人民郵電出版社)和Deitel父子合著的C How to Program兩本書。
C專家編程
Andrew Koenig是世界上屈指可數的C++專家,他的這本書可能是最薄的一本C語言經典。它簡明扼要地講述了C程序設計中的陷阱和缺陷,包括詞法陷阱、語法陷阱、語義陷阱、連接、庫函數、預處理器以及可移植性缺陷等,最後一章還給出了關於如何減少程序錯誤的建議以及前面各章問題的參考答案。盡管這個小冊子成書於C89標准制定之前,然而,即使到了C99早已頒布的今天,書中提到的大多數陷阱和缺陷一如十五年前那樣使我們警醒。
C程序設計教程
Deitel父子合著的C How to Program一直是非常好的C語言入門教程,我手頭的中譯本名為《C程序設計教程》(機械工業出版社出版,原書第二版)。除了對技術的正規描述(輔以許多簡明扼要的例子)外,每一章後面都帶有小結、術語、常見的程序設計錯誤、良好的程序設計習慣、性能忠告、可移植性忠告、軟體工程評述、自我測驗練習及答案等。整書內容清晰,組織良好,易於閱讀和理解。值得一提的是,有許多入門書讀完一遍即可扔掉,而這一本是個例外。
結語以上這幾本書很大程度上局限於描述C語言及標准庫本身,如果希望學習更專業的、領域相關的C程序設計技術,你可以在選擇閱讀這幾本書的基礎上繼續查閱專門書籍。此外,在C語言書籍領域,水平不相上下的作品有很多,這幾本只是根據我自身的閱讀體驗
B. 《C程序設計》學完了往後想學C++推薦幾本書
經過十分漫長的C++學習過程,我總算完成了我自己的C++心願,看完了我想看的所有C++書籍,回
顧我C++的整個學習過程,頗有一些心得和經驗,希望與各位分享,也希望給正處在摸索學習階段的
XDJM一點學習參考。
首先看看我第一次接觸編程語言,唔,那可能要追述上到世紀,在我小學4年紀的時候第一次接觸到
BASIC,那個時候學習這個東西完全是為了要爸爸給我買一台386,沒想到的是,BASIC開啟了我對於計算
機的一切興趣與追求。5年紀的時候參加少年的計算機奧賽,我用BASIC寫的一個彩色立體可旋轉移動的正
方體拿了一個銅牌,從此計算機編程成為了最大的愛好,現在我還保留著源代碼,是保存在一盤普通單放
機的磁帶上的,我估計很少有人用過錄音機和串口的轉換器吧,呵。我用BASIC寫的第二個大程序是給我
媽媽用的財務程序,初中二年紀的時候,我媽媽在單位做出納,我總看到媽媽每天晚上拿個計算機算一堆
表,所以我寫了這個程序幫助媽媽快速完成她的工作,其實我的根本目的是為了一台列印機,因為這個程
序,生成了簡單的報表,她可以直接列印,當然為了這個便利,她必須花錢給我買一台當時還算價值不低
的列印機。不過現在回顧起來,BASIC雖然是我編程的第一位啟蒙老師,但是在我開始C++的學習之後,他
確實使我我思想上產生了很大的困繞,主要是OOP思想,我花費了將近1年多的時間才真正體會到什麼是OO!
到了大學,我才真正開始系統的學習編程。在此之間走過一些歪路,比如高中的時候研究HACKING,
之所以說學習hacking是條歪路,原因很簡單,因為研究到一定的程度,沒有十分穩固的編程基礎,根本
的無法繼續深入學習。中國**聯盟解體前,位列第三的kender給了我這方面很大的打擊,從此我就退出了
,從此對於hacking我就不聞不問,從此看到那些下三爛的貨色也要學hacking,我就感到可笑。第一次接
觸的是C,沒什麼好說的,我C學的不好,因為我大二的時候經商去了,而且我覺得C能做的,我用BASIC都
能做到,為什麼要學C?當然那個時候我成績真是北大的BBS...然後接觸到的就是C++,教材的錢能的
《C++程序設計》,這本書其實還是很不錯的,不過很多看了兩本名著的朋友都對這本書嗤之以鼻,也許是
我天生很笨,在我看完了《C++PRIMER》後還經常番看《C++程序設計》。《C++程序設計》雖然出書的時
候ANSI C++還沒有確定下來,不過它還是含蓋了C++所有語法,建議對C++感興趣卻又沒有任何基礎的人先
從這本書開始,簡單而高效,不要認為人家一上來就看《C++ PRIMER》或是《the c++ programming
language》就覺得自己的檔次很低,你要確信,你肯定能超過他!這本書課後習題在我看來是典型的結構
化編程,即使到了CLASS,也全部可以用STRUCT代替。不過在這個階段做習題十分必要,用處我不想敲了
,推薦使用的編譯器就是書中所說到的編譯器(我忘記叫什麼了:P)看完之後,如果你想說C++很簡單的話
,建議你在看完了《C++ PRIMER》或是《the c++ programming language》之後再說。這兩本書都是基於
標准C++的,十分苛求的說,後者對標準的兼容性稍差:)。對這兩本書,我的看法是,如果你確實想仔細
的學習,建議你看《C++ PRIMER》,如果你想跳過我將要寫到的下面兩本書的話,建議你看
《the c++ programming language》。對這兩本書,前者最高到中文第三版,因為第四版,後者到特別版
。對於前者,我看後的感覺是它的優點在於解析,特別是函數,類,模板的解析,但是它並沒有含蓋C++
的方方面面,後者就不是這樣。實際上我並沒有仔細看過後者,只是同學總是拿這本書上的問題來與我商
量,所以有機會偷窺了幾眼。暫定你選擇的是前者繼續學習,在看完後,也許你用C++編制普通的程序已
經能夠運用自如,但是你仍然應該會有很多問題和遺憾,比如,類繼承,虛擬繼承,類訪問控制,類繼承
下的訪問控制,還有雖然我已經對如何解析十分清楚,但是我仍然感覺我對語法掌握得不系統,遺憾的是
,書中出現了很多的庫函數,我為什麼都不知道?這個時候建議你看看《標准C++寶典》,這本書對於語
法正所謂事無巨細,一一道來啊,再就是回顧一下《C++ 程序設計》(錢能),對類的部分講解的還是十
分精闢的。在掌握了一切牢固的語法基礎之後,我選擇的下一步不是STL,而是IOSTREAM,原因之一是因
為《C++ PRIMER》並沒有把這一部分講述的很好,對了,《C++ PRIMER》也沒有把STL講述的很好,所以
我看《C++ PRIMER》的時候這些章節都跳過了,我的目標是不求知道,只求精通。對於IOSTREAM,我選的
書是《Standard C++ IOStream and Locales》,我當時還是看的E文原版,事實證明,我錯了,這本對於
當時的我,難度突然拔的太高,所以在看完了第一章之後我就放棄了,只是暫時的擱置下來了。對了,忘
記說,對於《C++ PRIMER》或是《the c++ programming language》的學習,你應該十分認真的選擇編譯
器了,我推薦3個首選dev-cpp最高4.9.9.2,然後是vc.net(千萬看清楚,不是vc6.0!),最後就是
borland c++ builder-X,具體我就不介紹了,相信你學習到這一步,自己應該已經掌握很多的信息了.繼
續,下一步,我的選擇是〈深入探索C++對象模型〉,我是在圖書館借閱的,現在也有電子版了,不過我
看了以下,效果一般,但是可以和E文原版的電子版一起看。這本書看完。如果你是跟我一樣,把
《C++ PRIMER》翻爛掉,能把《深入探索C++對象模型》的知識要點全部背出來的話,我恭喜你,你的
C++水平已經到中級了:)接下來,我的選擇是對C++這門語言為我提供的所有服務設施通透的學習一邊。
說穿了,就是庫函數,C++庫函數分兩部分,一部分來自C語言,一部分就是STL,對於C語言部分,我建議
你可以買一本C++函數庫的書,最近好象剛出了一本,不過我還沒有機會看,我看的是〈C和C++代碼精
粹〉,裡面把C語言部分的庫函數分為3類,這本書我也就看了這3個章節,其他的東西我知道,看他做
甚?而對於STL,你如果真想成為C++出類拔萃的高手,你應該看3本<<C++標准程序庫>> <<泛型編程與
STL>> <<STL源碼剖析>>,第一本主要講的是如何使用STL,第二本將STL的一些設計理念,並指導你進
行泛型設計,所謂泛型說穿了就是指模板。看完這些書,如果你跟我一樣,可以把STL全部重寫一邊的
話,那麼恭喜你,你已經成為C++准高手,這個時候我的選擇是回過頭去看《Standard C++ IOStream
and Locales》,呵,現在才發現原來這本書這么簡單!簡直是naive!其實,我現在最想做的事情就是能
夠把IO全部重寫一邊,不過還沒有找到合適的編譯器下手,感覺應該用GCC比較好,還沒開始研究,我也
不清楚。好了,既然這么多本講述C++技術的書籍你都搞完了,也不在乎多兩本吧,呵呵。知道你應該看
什麼嗎?你應該看看<exceotional c++>還有<effective c++>,這兩本書都有more版,不算太難,最後可
以看《高質量C++編程》,最後有一套練習題,做做,小菜一樣。接下來我的選擇是<C++編程思想> 〈設
計模式〉 〈大規模C++程序設計〉(最後一本我最近才看完:P)這3本書可不講什麼語法,第一本實在沒
有必要介紹,似乎每一種語言的編程思想的的書籍都是說的如何用這門語言編程,第二本其實並不能說是
針對C++,所有語言通用的一本書,關鍵是程序設計的方式,第三本被稱為〈設計模式〉的C++實踐篇,其
意義毋庸多說。看完了嗎?好吧,你應該選一個項目鍛煉一下。如果你能在一個月內看完這所有的書,歡
迎你加入ISS_SQL開發團隊,這個就是我近期想做的事情,我就是想寫一個自己的資料庫。不過如果你不
是外星人的話,我估計你不可能在一個月的時間內,看完我看了2年的書。對於我剛才說的SQL,我還在選
人,說實在的,現在我的同學里,真的是沒有幾個人的技術能讓我看的上的,哎,得一知己難啊!還是繼
續說編程,這個時候,你已經有了頂級的C++基礎,想學什麼不容易?java,你學了一個月??開玩笑,
我看了一個星期的書就開始做項目了!其實我覺得到了這個時候是一個面臨選擇的時候,一個是做UNIX下
的開發,一個是做WINDOWS下的,不過我選擇了第三條路,也就是我正在學的,演算法,因為我的導師正在
做973計劃中的數據挖掘項目,所以我也沾光,因為是基與weka,所以我用java,這個B語言真弱智,我已
經開始討厭JAVA了,所以我才想用C++重寫一個WEKA類的開源軟體,不過我感覺用java寫演算法,的確不
錯。前段時間,我一個同學為了一個C#問題苦惱,問題粗略說來是GIS設備返回串,要進行處理,提取數
據,因為串本身的復雜性,具體是怎麼樣的我也不知道,因為他的這個是商業項目。這個問題在C#下十分
困難,連正則表達式都無能為力,所以我給他的建議是寫一個自動機,也不知道他最後的處理方式,不過
在java下,呵,大概不超過五十行代碼吧。說遠了。
最後說說人的問題。有一點點浮躁的人建議你千萬別想學C++,直接學VB或者C#算了,希望在浩方有
個排名的人,我直接告訴你,你不應該學C++。
關於C++的學習,我就說這么多,其實也感覺沒有說什麼,只是把我學習C++看的每一門書都羅列出來
,雖有顯擺之嫌,但也確實希望給那些如曾經的我一樣迷茫的摸索者,那些希望學習C++且追求完美技術
的人指一條明路。簡單的說,你認真看完我上面說的所有書,你就是C++高手!
新手入門:如何學好c++
下面的是學C++時要注意的。
1.把C++當成一門新的語言學習(和C沒啥關系!真的。);
2.看《Thinking In C++》,不要看《C++變成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object
Model》,不要因為他們很難而我們自己是初學者所以就不看;
4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是集成開發環境,而我們要學的是一門語言;
5.不要放過任何一個看上去很簡單的小編程問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;
6.會用Visual C++,並不說明你會C++;
7.學class並不難,template、STL、generic
programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;
8.如果不是天才的話,想學編程就不要想玩游戲——你以為你做到了,其實你的C++水平並沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編游戲的;
9.看Visual C++的書,是學不了C++語言的;
10.浮躁的人容易說:XX語言不行了,應該學YY;——是你自己不行了吧!?
11.浮躁的人容易問:我到底該學什麼;——別問,學就對了;
12.浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;
13.浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!
14.浮躁的人容易問:XX和YY哪個好;——告訴你吧,都好——只要你學就行;
15.浮躁的人分兩種:a)只觀望而不學的人;b)只學而不堅持的人;
16.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
17.C++不僅僅是支持面向對象的程序設計語言;
18.學習編程最好的方法之一就是閱讀源代碼;
19.在任何時刻都不要認為自己手中的書已經足夠了;
20.請閱讀《The Standard C++ Bible》(中文版:標准C++寶典),掌握C++標准;
21.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
22.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成開發環境的搖籃上,要學會控制集成開發環境,還要學會用命令行方式處理程序;
25.和別人一起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;
26.請看《程序設計實踐》,並嚴格的按照其要求去做;
27.不要因為C和C++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;
28.C++絕不是所謂的C的「擴充」——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯系得那麼緊密;
29.請不要認為學過XX語言再改學C++會有什麼問題——你只不過又在學一門全新的語言而已;
30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;
31.學習編程的秘訣是:編程,編程,再編程;
32.請留意下列書籍:《C++面向對象高效編程(C++ Effective Object-Oriented Software Construction)》《面向對象軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;
33.記住:面向對象技術不只是C++專有的;
34.請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼;
35.把在書中看到的有意義的例子擴充;
36.請重視C++中的異常處理技術,並將其切實的運用到自己的程序中;
37.經常回顧自己以前寫過的程序,並嘗試重寫,把自己學到的新知識運用進去;
38.不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路;
39.C++語言和C++的集成開發環境要同時學習和掌握;
40.既然決定了學C++,就請堅持學下去,因為學習程序設計語言的目的是掌握程序設計技術,而程序設計技術是跨語言的;
41.就讓C++語言的各種平台和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;
42.當你寫C++程序寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);
43.別心急,設計C++的class確實不容易;自己程序中的class和自己的class設計水平是在不斷的編程實踐中完善和發展的;
44.決不要因為程序「很小」就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;
45.每學到一個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;
46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;
47.請不斷地對自己寫的程序提出更高的要求,哪怕你的程序版本號會變成Version 100.XX;
48.保存好你寫過的所有的程序——那是你最好的積累之一;
49.請不要做浮躁的人;
50.請熱愛C++!
補充:
對c++學習的一點感想,希望對初學者能有些幫助
1.如果你以前從來沒有接觸過c++,那麼選擇的第一本c++教程就顯得尤為重要,我認為你可以參照以下的標准進行選擇:
a.對標准c++進行講解,畢竟c++比從前發生了很大的變化。
b.要求全面,但不要很深,這要有助於你對於c++有一個全面的認識,打好基礎,並且易懂的教材還能加快學習的進度,讓自己保持一種成就感。
c.要有完整的範例來講解每一個知識點如何運用,請注意這里所說的完整,並不是一個個代碼片斷。因為由於你以前從未接觸過用c++進行編程,完整的代碼可以使你有一個整體的概念,並且能夠很快去進行大量的實踐,因為變編程是從模仿開始,完整的代碼恰恰告訴你了一個完整的步驟。不必自己去揣測。
d.推薦:《c++ primer plus》
2.當你有了一定的基礎以後,就要選擇一些書來迅速提高自己。這類書的特點是不僅僅教你如何去運用,而且要叫你如何去思考,並且你讀起來也不是那麼輕松。它意味深遠,並不是你讀一遍就能掌握的。
推薦:《thinking in c++》《effective c++》《more effective c++》
《c++ programming language》...《c++ 沉思錄》
3.接下來就是對第二步所介紹的書籍進行反復的閱讀,並且進行實踐。由於這些書一位深遠,每個人基於自己的基礎都會有不同的收獲,例如如果你的基礎還沒有達到某一高度,那麼你就對一些精深的技術視而不見,不信?你可以試試,看看當自己有了一定提高之後再來讀從前的一本書,你會發現許多新的東西。
C. 提高C語言編程能力
如何提高C語言的編程能力:
學習C語言,譚浩強的《C程序設計》是一部非常好的C語言書籍,學習程序設計是一個非常漫長的過程,不要著急,一本書多看兩遍三遍,學會交叉學習法,在學習C的過程中,可以看看數據結構,編譯原理,操作系統等書籍,對編成都是很有幫助的。最開始學習的時候,先不要編一些比較大的程序,多編一些小程序,比如數組運算,字元組合等等,指針是C語言的精華,是比較復雜的部分。看到你的情況,編了一個學習系統,對語言的駕馭能力還是很不錯的,我相信你,你一定能學習好C語言的。
C++的學習方法或建議
C++是C語言的擴展,學習的難度比較大一些,也是目前學習難度最大的一門語言,相對與C來講,增加了一些新特性,繼承,對象,模板,多態,STL(標准模板庫),充分掌握這門語言需要四年的時間,
C++學習經典:
1.把C++當成一門新的語言學習。
2.看《Thinking In C++》,不要看《C++變成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;
4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是集成開發環境,而我們要學的是一門語言;
5.不要放過任何一個看上去很簡單的小編程問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;
6.會用Visual C++,並不說明你會C++;
7.學class並不難,template、STL、generic programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;
8.如果不是天才的話,想學編程就不要想玩游戲——你以為你做到了,其實你的C++水平並沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編游戲的;
9.看Visual C++的書,是學不了C++語言的;
10.浮躁的人容易說:XX語言不行了,應該學YY;——是你自己不行了吧!?
11.浮躁的人容易問:我到底該學什麼;——別問,學就對了;
12.浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;
13.浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!
14.浮躁的人容易問:XX和YY哪個好;——告訴你吧,都好——只要你學就行;
15.浮躁的人分兩種:a)只觀望而不學的人;b)只學而不堅持的人;
16.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
17.C++不僅僅是支持面向對象的程序設計語言;
18.學習編程最好的方法之一就是閱讀源代碼;
19.在任何時刻都不要認為自己手中的書已經足夠了;
20.請閱讀《The Standard C++ Bible》(中文版:標准C++寶典),掌握C++標准;
21.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
22.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成開發環境的搖籃上,要學會控制集成開發環境,還要學會用命令行方式處理程序;
25.和別人一起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;
26.請看《程序設計實踐》,並嚴格的按照其要求去做;
27.不要因為C和C++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;
28.C++絕不是所謂的C的「擴充」——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯系得那麼緊密;
29.請不要認為學過XX語言再改學C++會有什麼問題——你只不過又在學一門全新的語言而已;
30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;
31.學習編程的秘訣是:編程,編程,再編程;
32.請留意下列書籍:《C++面向對象高效編程(C++ Effective Object-Oriented Software Construction)》《面向對象軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;
33.記住:面向對象技術不只是C++專有的;
34.請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼;
35.把在書中看到的有意義的例子擴充;
36.請重視C++中的異常處理技術,並將其切實的運用到自己的程序中;
37.經常回顧自己以前寫過的程序,並嘗試重寫,把自己學到的新知識運用進去;
38.不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路;
39.C++語言和C++的集成開發環境要同時學習和掌握;
40.既然決定了學C++,就請堅持學下去,因為學習程序設計語言的目的是掌握程序設計技術,而程序設計技術是跨語言的;
41.就讓C++語言的各種平台和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;
42.當你寫C++程序寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);
43.別心急,設計C++的class確實不容易;自己程序中的class和自己的class設計水平是在不斷的編程實踐中完善和發展的;
44.決不要因為程序「很小」就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;
45.每學到一個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;
46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;
47.請不斷地對自己寫的程序提出更高的要求,哪怕你的程序版本號會變成Version 100.XX;
48.保存好你寫過的所有的程序——那是你最好的積累之一;
49.請不要做浮躁的人;
50.請熱愛C++!
----------------------------------------------------------------------
補充:
對c++學習的一點感想,希望對初學者能有些幫助
1.如果你以前從來沒有接觸過c++,那麼選擇的第一本c++教程就顯得尤為重要,我認為你可以參照以下的標准進行選擇:
a.對標准c++進行講解,畢竟c++比從前發生了很大的變化。
b.要求全面,但不要很深,這要有助於你對於c++有一個全面的認識,打好基礎,並且易懂的教材還能加快學習的進度,讓自己保持一種成就感。
c.要有完整的範例來講解每一個知識點如何運用,請注意這里所說的完整,並不是一個個代碼片斷。因為由於你以前從未接觸過用c++進行編程,完整的代碼可以使你有一個整體的概念,並且能夠很快去進行大量的實踐,因為變編程是從模仿開始,完整的代碼恰恰告訴你了一個完整的步驟。不必自己去揣測。
d.推薦:《c++ primer plus》
2.當你有了一定的基礎以後,就要選擇一些書來迅速提高自己。這類書的特點是不僅僅教你如何去運用,而且要叫你如何去思考,並且你讀起來也不是那麼輕松。它意味深遠,並不是你讀一遍就能掌握的。
推薦:《thinking in c++》《effective c++》《more effective c++》 《c++ programming language》...《c++ 沉思錄》
3.接下來就是對第二步所介紹的書籍進行反復的閱讀,並且進行實踐。由於這些書一位深遠,每個人基於自己的基礎都會有不同的收獲,例如如果你的基礎還沒有達到某一高度,那麼你就對一些精深的技術視而不見,不信?你可以試試,看看當自己有了一定提高之後再來讀從前的一本書,你會發現許多新的東西。
---------------------------------------------------------------------------
我向你推薦一些C++經典書籍:
c++程序設計教程
c++編程思想
c++大學教程
c++程序設計語言
數據結構演算法與應用c++語言描述
c++標准模板庫------自修教程與參考手冊
泛型編程與STL
深度探索c++對象模型
設計模式---可復用面向對象軟體的基礎
重構---改善既有代碼的設計
Essential c++
Effective c++
More Effctive c++
C++ primer
前五本應該屬於入門書籍,後面的屬於學習難度比較大的,想提高C++的編程能力,看看這些書籍有好處。建議你把編程思想這本書多看看。多做練習題,對提高編程水平的幫助是很大的。
其實語言是相通的,一門語言學會了,學習其他語言就比較容易了。
業界有這樣一種說法,因為JAVA這門語言包含了C++的一些特性,掌握了C++,就等於掌握了JAVA的80%,
我是一名大三的學生,我也正在學習C++這門語言,一年多的時間,學習的感覺真的很累的,希望能和你成為朋友!
我的QQ:261174630
最後祝你在學習編程的道路上走的更好更遠,祝你學有所成!!
D. c++ 編程
下面的是學C++時要注意的。
1.把C++當成一門新的語言學習(和C沒啥關系!真的。);
2.看《Thinking In C++》,不要看《C++變成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object
Model》,不要因為他們很難而我們自己是初學者所以就不看;
4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是集成開發環境,而我們要學的是一門語言;
5.不要放過任何一個看上去很簡單的小編程問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;
6.會用Visual C++,並不說明你會C++;
7.學class並不難,template、STL、generic
programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;
8.如果不是天才的話,想學編程就不要想玩游戲——你以為你做到了,其實你的C++水平並沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編游戲的;
9.看Visual C++的書,是學不了C++語言的;
10.浮躁的人容易說:XX語言不行了,應該學YY;——是你自己不行了吧!?
11.浮躁的人容易問:我到底該學什麼;——別問,學就對了;
12.浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;
13.浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!
14.浮躁的人容易問:XX和YY哪個好;——告訴你吧,都好——只要你學就行;
15.浮躁的人分兩種:a)只觀望而不學的人;b)只學而不堅持的人;
16.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
17.C++不僅僅是支持面向對象的程序設計語言;
18.學習編程最好的方法之一就是閱讀源代碼;
19.在任何時刻都不要認為自己手中的書已經足夠了;
20.請閱讀《The Standard C++ Bible》(中文版:標准C++寶典),掌握C++標准;
21.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
22.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成開發環境的搖籃上,要學會控制集成開發環境,還要學會用命令行方式處理程序;
25.和別人一起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;
26.請看《程序設計實踐》,並嚴格的按照其要求去做;
27.不要因為C和C++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;
28.C++絕不是所謂的C的「擴充」——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯系得那麼緊密;
29.請不要認為學過XX語言再改學C++會有什麼問題——你只不過又在學一門全新的語言而已;
30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;
31.學習編程的秘訣是:編程,編程,再編程;
32.請留意下列書籍:《C++面向對象高效編程(C++ Effective Object-Oriented Software Construction)》《面向對象軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;
33.記住:面向對象技術不只是C++專有的;
34.請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼;
35.把在書中看到的有意義的例子擴充;
36.請重視C++中的異常處理技術,並將其切實的運用到自己的程序中;
37.經常回顧自己以前寫過的程序,並嘗試重寫,把自己學到的新知識運用進去;
38.不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路;
39.C++語言和C++的集成開發環境要同時學習和掌握;
40.既然決定了學C++,就請堅持學下去,因為學習程序設計語言的目的是掌握程序設計技術,而程序設計技術是跨語言的;
41.就讓C++語言的各種平台和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;
42.當你寫C++程序寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);
43.別心急,設計C++的class確實不容易;自己程序中的class和自己的class設計水平是在不斷的編程實踐中完善和發展的;
44.決不要因為程序「很小」就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;
45.每學到一個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;
46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;
47.請不斷地對自己寫的程序提出更高的要求,哪怕你的程序版本號會變成Version 100.XX;
48.保存好你寫過的所有的程序——那是你最好的積累之一;
49.請不要做浮躁的人;
50.請熱愛C++!
補充:
對c++學習的一點感想,希望對初學者能有些幫助
1.如果你以前從來沒有接觸過c++,那麼選擇的第一本c++教程就顯得尤為重要,我認為你可以參照以下的標准進行選擇:
a.對標准c++進行講解,畢竟c++比從前發生了很大的變化。
b.要求全面,但不要很深,這要有助於你對於c++有一個全面的認識,打好基礎,並且易懂的教材還能加快學習的進度,讓自己保持一種成就感。
c.要有完整的範例來講解每一個知識點如何運用,請注意這里所說的完整,並不是一個個代碼片斷。因為由於你以前從未接觸過用c++進行編程,完整的代碼可以使你有一個整體的概念,並且能夠很快去進行大量的實踐,因為變編程是從模仿開始,完整的代碼恰恰告訴你了一個完整的步驟。不必自己去揣測。
d.推薦:《c++ primer plus》
2.當你有了一定的基礎以後,就要選擇一些書來迅速提高自己。這類書的特點是不僅僅教你如何去運用,而且要叫你如何去思考,並且你讀起來也不是那麼輕松。它意味深遠,並不是你讀一遍就能掌握的。
推薦:《thinking in c++》《effective c++》《more effective c++》
《c++ programming language》...《c++ 沉思錄》
3.接下來就是對第二步所介紹的書籍進行反復的閱讀,並且進行實踐。由於這些書一位深遠,每個人基於自己的基礎都會有不同的收獲,例如如果你的基礎還沒有達到某一高度,那麼你就對一些精深的技術視而不見,不信?你可以試試,看看當自己有了一定提高之後再來讀從前的一本書,你會發現許多新的東西。
E. 我想要譚浩強3版的c語言!!
給C++初學者的50個忠告
1.把C++當成一門新的語言學習(和C沒啥關系!真的。);
2.看《Thinking In C++》,不要看《C++變成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;
4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是集成開發環境,而我們要學的是一門語言;
5.不要放過任何一個看上去很簡單的小編程問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;
6.會用Visual C++,並不說明你會C++;
7.學class並不難,template、STL、generic programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;
8.如果不是天才的話,想學編程就不要想玩游戲——你以為你做到了,其實你的C++水平並沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編游戲的;
9.看Visual C++的書,是學不了C++語言的;
10.浮躁的人容易說:XX語言不行了,應該學YY;——是你自己不行了吧!?
11.浮躁的人容易問:我到底該學什麼;——別問,學就對了;
12.浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;
13.浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!
14.浮躁的人容易問:XX和YY哪個好;——告訴你吧,都好——只要你學就行;
15.浮躁的人分兩種:a)只觀望而不學的人;b)只學而不堅持的人;
16.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
17.C++不僅僅是支持面向對象的程序設計語言;
18.學習編程最好的方法之一就是閱讀源代碼;
19.在任何時刻都不要認為自己手中的書已經足夠了;
20.請閱讀《The Standard C++ Bible》(中文版:標准C++寶典),掌握C++標准;
21.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
22.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成開發環境的搖籃上,要學會控制集成開發環境,還要學會用命令行方式處理程序;
25.和別人一起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;
26.請看《程序設計實踐》,並嚴格的按照其要求去做;
27.不要因為C和C++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;
28.C++絕不是所謂的C的「擴充」——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯系得那麼緊密;
29.請不要認為學過XX語言再改學C++會有什麼問題——你只不過又在學一門全新的語言而已;
30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;
31.學習編程的秘訣是:編程,編程,再編程;
32.請留意下列書籍:《C++面向對象高效編程(C++ Effective Object-Oriented Software Construction)》《面向對象軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;
33.記住:面向對象技術不只是C++專有的;
34.請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼;
35.把在書中看到的有意義的例子擴充;
36.請重視C++中的異常處理技術,並將其切實的運用到自己的程序中;
37.經常回顧自己以前寫過的程序,並嘗試重寫,把自己學到的新知識運用進去;
38.不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路;
39.C++語言和C++的集成開發環境要同時學習和掌握;
40.既然決定了學C++,就請堅持學下去,因為學習程序設計語言的目的是掌握程序設計技術,而程序設計技術是跨語言的;
41.就讓C++語言的各種平台和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;
42.當你寫C++程序寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);
43.別心急,設計C++的class確實不容易;自己程序中的class和自己的class設計水平是在不斷的編程實踐中完善和發展的;
44.決不要因為程序「很小」就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;
45.每學到一個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;
46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;
47.請不斷的對自己寫的程序提出更高的要求,哪怕你的程序版本號會變成Version 100.XX;
48.保存好你寫過的所有的程序——那是你最好的積累之一;
49.請不要做浮躁的人;
50.請熱愛C++!
建議你買本書,書比網上的電子版教程好的多,如計算機屆超級權威教授 譚浩強 老先生寫的《C語言程序設計(第三版)》,全國發行了700萬冊,可以說是學C語言的人必看的書,我們大學就用這本書,很適合自學,通俗易懂
建議你學習其它計算機知識時也看他的書,他出的書很多,涵蓋面廣,每一本都很經典
這里有他的教程word版下載
http://58.251.57.206/down?cid=&t=2&fmt=
另外,機械工業出版社的 計算機叢書系列也相當經典,全是翻譯國外經典教材,國外計算機發展早,水平比國內高很多,看這些教材事半功倍,推薦(美)Al Kelley Ira Pohl的《C語言教程第4版》
學習程序語言要持之以恆,不浮躁,祝你成功!
1.這是教材:
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=4363060
2.這是習題答案:
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2302699
至於視頻,你可到新浪視頻,比如這個:
http://search.you.video.sina.com.cn/s?sort=click&key=C%D3%EF%D1%D4&type=video
當然你可以選擇其它的.
F. 求C語言的教程,入門的,電子書或者視頻都ok~
C語言入門|C語言視頻|C語言電子書免費下載
鏈接: https://pan..com/s/1UazOO71Obo_Kdno3VB6hGw
語言四本經典書籍不知道你看了幾本?C程序設計語言 C和指針 C陷阱與缺陷 C專家編程
這四本看完了,那麼你的C就是差不多很厲害了.C程序設計語言那本可不是國內的,是外國的,就是二樓說的那個,最新好象是第二版,你可以上網查
G. c++面向對象高效編程 怎麼樣
當然可以!
面向對象本身是一種思想,而用哪種語言實現只是一種技術手段。事實上思想和技術的關系本身就是class和object的關系。
classoo{
//這是面向對象的思想類
};
oojava;//java是oo的一個具體的技術實現
oocxx;//c++是oo的一個具體的技術實現
#include<stdio.h>
#include<tchar.h>
#include<windows.h>
#include<TLHELP32.H>
charwhat_shell_run()
{
HANDLEhSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hSnap==0){
return_T('E');
}
PROCESSENTRY32pe32={0};
pe32.dwSize=sizeofpe32;
DWORDdwSelfPid=GetCurrentProcessId();
DWORDdwParentPid=~0;
for(BOOLbLoop=Process32First(hSnap,&pe32);bLoop!=FALSE;bLoop=Process32Next(hSnap,&pe32))
{
if(dwSelfPid==pe32.th32ProcessID){
dwParentPid=pe32.th32ParentProcessID;
break;
}
}
if(dwParentPid==~0)return_T('U');
for(bLoop=Process32First(hSnap,&pe32);bLoop!=FALSE;bLoop=Process32Next(hSnap,&pe32))
{
if(dwParentPid==pe32.th32ProcessID){
if(lstrcmpi(pe32.szExeFile,_T("cmd.exe"))==0)
{
CloseHandle(hSnap);
return_T('C');
}elseif(lstrcmpi(pe32.szExeFile,_T("explorer.exe"))==0){
CloseHandle(hSnap);
return_T('G');
}
}
}
CloseHandle(hSnap);
return_T('U');
}
voidconsole(void){
printf("這是一控制台程序 ");
}
voidgui(void){
MessageBox(0,_T("這是一個GUI程序"),_T("GUI"),MB_OK);
}
intmain()
{
charch=what_shell_run();
switch(ch)
{
case'C':
console();break;
case'G':
gui();break;
}
return0;
}
H. 求譚浩強C++面向對象程序設計pdf,紅皮的哪個版本!!!!!!!必有重賞!!!!!
如果沒什麼基礎,先從C開始入門吧。C++語言本身包含的東西很多很雜,對初學者來說不是太好上手。C語言出現年代更早且C++設計的時候就是要在C上添加面向對象支持。C語言的語法規范大致上是C++的一個子集,語法簡單,沒有C++的各種讓人困惑的高級特性,學起來相對簡單直接。電子書這東西不可靠,剛學編程一個錯字就能讓你糾結半天 ,浪費時間不說,有時還會曲解原本的概念,把你帶入一個錯誤的方向。我剛學編程就是這樣過來的,要多坑爹有多坑爹。上242上597上99上60上,數字能見 我 Q,我是大學計算機專業的,能助你
I. C程序設計第二版(譚浩強) 清華大學《C語言》 (第2版)
算你找對人了!
1.這是教材:
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=4363060
2.這是習題答案:
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2302699
至於視頻,你可到新浪視頻,比如這個:
http://search.you.video.sina.com.cn/s?sort=click&key=C%D3%EF%D1%D4&type=video
當然你可以選擇其它的.