談及C/C++,功能強大、應用普遍,一旦掌握了後,如果再自學其餘語言就顯得垂手可得了。那爲何學C/C++的人少呢?不少人認爲C/C++雖然博大精深,但也難學。其實就本人認爲C/C++並不是是「difficult(困難)」的,只要你能理清思路,掌握它的精髓,配合一套教材。那麼學C/C++是一件很是容易且又其樂無窮的事。今天本人就與你們一塊兒談談如何學習C/C++或者說學習C/C++應從哪幾方面着手。linux
先來講說C語言。程序員
1、入門後多看代碼算法
在有必定基礎之後必定要多看別人的代碼。注意代碼中的算法和數據結構。畢竟學C以後的關口就是算法和數據結構。提到數據結構,指針是其中重要的一環,絕大多數的數據結構是創建在指針之上的,如鏈表、隊列、樹、圖等等,因此只有學好指針才能真正學好C。別的方面也要關注一下,諸如變量的命名、庫函數的用法等等。有些庫函數是常常用到的。對於這些函數的用法就要緊緊記住。shell
2、要本身動手編程
編程序是個實幹的活,光說不練不行。剛開始學的時候能夠多練習書上的習題。對於本身不明白的地方,本身編個小程序實驗一下是最好的方法,能給本身留下深入的印象。本身動手的過程當中要不斷糾正本身很差的編程習慣和認識錯誤。有必定的基礎之後能夠嘗試編一點小遊戲,照着編做爲練習。基礎很紮實的時候,能夠編一些關於數據結構方面的東西。以後.....學彙編、硬件知識。小程序
3、選擇一個好的編譯器windows
GCC或者VS都是一個好的選擇數組
4、關於養成良好的編程習慣數據結構
(1) 在比較複雜的代碼後面要有註釋。若是光溜溜一堆代碼,別人就不可能看懂你的代碼,並且也不利於查找錯誤。除非你一直編東西給本身看。能在代碼裏說明白的就必定要在代碼裏體現。好比變量名、函數名,在命名的時候儘可能說明是幹什麼用的。框架
(2)注意語句的嵌套不能過長,通常來講,一段代碼裏Tab要少於8個。簡單說就是語句最多8個嵌套。對於新手來講,這個標準還要降低。有一個好習慣是,把主函數儘可能寫簡短。常常看到別人的代碼是主函數只有幾行,幾個函數調用,而定義全在主函數外部。這樣一是減小了主函數內部的嵌套,二是比較精簡,容易讀懂。
(3)注意語句的選擇。並非分支語句就用if循環就用while、for。在適當的狀況下switch和do while語句也是要用的。在某些時候,switch語句比if語句更加精練明瞭,而do while比while少一個循環。
不少人對學習C語言感到無從下手,常常問我同一個問題:究竟怎樣學習C語言?我是一個教師,已經開發了不少年的程序,和不少剛剛起步的人同樣,學習的第一個計算機語言就是C語言。通過這些年的開發,我深深的體會到C語言對於一個程序設計人員多麼的重要,若是不懂C語言,你想寫底層程序這幾乎聽起來很好笑,不懂C語言,你想寫出優秀高效的程序,這簡直就是天方夜譚。爲何C語言如此重要呢?
第一:C語言語法結構很簡潔精妙,寫出的程序也很高效,很便於描述算法,大多數的程序員願意使用C語言去描述算法自己,因此,若是你想在程序設計方面有所建樹,就必須去學它。
第二:C語言可以讓你深刻系統底層,你知道的操做系統,哪個不是C語言寫的?全部的windows,Unix,Linux,Mac,os/2,沒有一個裏外的,若是你不懂C語言,怎麼可能深刻到這些操做系統當中去呢?更不要說你去寫它們的內核程序了。
第三:不少新型的語言都是衍生自C語言,C++,Java,C#,J#,perl...哪一個不是呢?掌握了C語言,能夠說你就掌握了不少門語言,通過簡單的學習,你就能夠用這些新型的語言去開發了,這個再一次驗證了C語言是程序設計的重要基礎。還有啊,多說一點:即便如今招聘程序員,不少考試都是考C語言,你想加入it行業,那麼就必定要掌握好C語言。
系統學習編程的方式。首先你要了解什麼語言能作什麼,學來幹嗎,而後學相對應的知識,而不是盲目的去學習。
C語言不少人都是剛剛接觸 徹底都不知道這是什麼,那麼就要先裝個編譯器,IED,或者gcc等均可以,只要能用。
C語言知識流程:
學數據類型,-進制轉換-運算符-循環語句-開關分支語句-函數-數組-字符串-指針-結構體-內存管理-文件操做-函數指針-指針函數-多維數組-高級指針-結構圖嵌套-高級內存管理-鏈表-排序算法-二樹叉-APi函數-linux命令-linuxAPi函數-shell腳本-socket通訊-等。
初學者看得會有點亂,到了學API函數 的時候也就是開發項目的時候了,可是有一點注意,由於部分知識無法在書上表達出來,因此目前書上知識是不完善的。
一門語言開發出項目來纔算是真正的開始,也就是說,你開發出來項目,纔有可能去接觸工做,C語言的工做崗位相對來講是比較少的。
再來講說C++:
C++ 知識不少,主要部分就是框架,QT,MFC這兩種框架目前用的是比較多的,也有人會直接學C++,可是學起來會比直接學C還難,而學過C在學C++是容易不少,主要學的就是框架方面的知識了,C語言的知識和C++的差很少,區別不大,因此學C++的時候主要學的就是框架了。
C++知識流程:
編譯環境配置-名字空間-函數重載-啞元函數-內聯函數-引用-類型轉換-面向對象-類的使用-構造函數-析構函數-拷貝構造-拷貝賦值-this指針-常對象-常函數-動態內存分配-靜態成員-運算符重載-繼承-多重繼承-函數重寫-多態-虛函數-抽類象-虛析構-動態綁定-文件i/o-異常處理-標準異常-泛型編程-十大容器-算法-迭代器-QT編程-QT三維圖形-API函數編程-MFC框架編程。
C語言是面向過程的,而C++是面向對象的。
C和C++的區別:
C是一個結構化語言,它的重點在於算法和數據結構。C程序的設計首要考慮的是如何經過一個過程,對輸入(或環境條件)進行運算處理獲得輸出(或實現過程(事務)控制)。
C++,首要考慮的是如何構造一個對象模型,讓這個模型可以契合與之對應的問題域,這樣就能夠經過獲取對象的狀態信息獲得輸出或實現過程(事務)控制。因此C與C++的最大區別在於它們的用於解決問題的思想方法不同。之因此說C++比C更先進,是由於「 設計這個概念已經被融入到C++之中 」。
C與C++的最大區別:在於它們的用於解決問題的思想方法不同。之因此說C++比C更先進,是由於「 設計這個概念已經被融入到C++之中 」,而就語言自己而言,在C中更多的是算法的概念。那麼是否是C就不重要了,錯!算法是程序設計的基礎,好的設計若是沒有好的算法,同樣不行。並且,「C加上好的設計」也能寫出很是好的東西。
上面知識學完就該到項目開發,只有開發出項目,你才能去工做,開發軟件等。
以上就是一個學習的流程,從零基礎有順序的學習,才能走得快一點,而不是盲目。