替換高清大圖
請點(diǎn)擊此處輸入圖片描述
C語言是面向過程的,而C++是面向?qū)ο蟮?/p>
C和C++的區(qū)別:
C是一個結(jié)構(gòu)化語言纸泄,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)赖钞。C程序的設(shè)計(jì)首要考慮的是如何通過一個過程腰素,對輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)。
C++仁烹,首要考慮的是如何構(gòu)造一個對象模型耸弄,讓這個模型能夠契合與之對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制卓缰。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣计呈。之所以說C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個概念已經(jīng)被融入到C++之中 ”征唬。
?C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣捌显。之所以說C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個概念已經(jīng)被融入到C++之中 ”总寒,而就語言本身而言扶歪,在C中更多的是算法的概念。那么是不是C就不重要了摄闸,錯善镰!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒有好的算法年枕,一樣不行炫欺。而且,“C加上好的設(shè)計(jì)”也能寫出非常好的東西熏兄。
請點(diǎn)擊此處輸入圖片描述
我是一名寫了N年(N > 8)C語言的軟件工程師品洛。
希望我的經(jīng)驗(yàn)?zāi)芙o初學(xué)者一些建議或者啟發(fā),本文沒有涵蓋C語言的方方面面摩桶,但是對于想入門的初學(xué)者來說足夠了桥状。另外需要說明的是,我不是大神硝清,真正的大神是開發(fā)C語言標(biāo)準(zhǔn)辅斟,寫標(biāo)準(zhǔn)庫,寫編譯器的那幫人芦拿,但我自認(rèn)為我的C語言掌握的比周圍的很多人都要好砾肺,所以才敢在這里發(fā)言。
想學(xué)一門編程語言防嗡,不知道學(xué)什么才好? 毫無疑問 C 語言啊侠坎。
C 語言是整個計(jì)算機(jī)體系的基礎(chǔ)蚁趁,往下可以操作硬件(不止X86計(jì)算機(jī),還有ARM实胸,DSP他嫡,單片機(jī)等各種微處理器)寫Firmware番官,寫驅(qū)動、寫OS钢属,寫編譯器徘熔,往上可以寫 App,并且大部分的計(jì)算機(jī)書籍里的算法都是C語言描述的淆党。
所以學(xué)會了 C 語言酷师,就是掌握了軟件領(lǐng)域的必備技能,以后再學(xué)其他的比如C++染乌,Java山孔,各種解釋性語言、就是小 Case 了荷憋。
下圖是一個網(wǎng)上流行的程序員“鄙視鏈”台颠。其實(shí)我想說的是,還是有一定道理的勒庄,哈哈哈串前,笑而不語。
替換高清大圖
請點(diǎn)擊此處輸入圖片描述
我初學(xué) C 語言是在 2005年大二实蔽,那個時候荡碾,上課的模式是老師在上面講,我們在下面聽盐须,然后就沒有然后了玩荠,因?yàn)闆]有電腦練習(xí),我根本就沒有機(jī)會在課下了解更多的東西贼邓。學(xué)完了一本書阶冈,C 語言是干嘛的我都不知道,那個時候我并不知道 C 語言是用來寫軟件的塑径,更何況別說軟件了女坑,電腦都沒怎么見過。
我們當(dāng)初用的教材名字叫 《VC++ 語言程序設(shè)計(jì)》统舀,這導(dǎo)致我很長一段時間都沒不知道VC++匆骗,和 C++, C 的區(qū)別誉简,OMG5锞汀!
對 C 語言的深入學(xué)習(xí)是在研究生期間闷串,我認(rèn)真地從頭到尾翻了一遍H.M.Deitel 的那本 C++瓮钥,有了電腦簡直如虎添翼,我有陣子天天在宿舍編程。對了碉熄,我是在學(xué)習(xí)C++的時候桨武,順帶學(xué)習(xí)(復(fù)習(xí))的 C 語言,反正 C++ 的書上總有會 C 的锈津。
這里是我總結(jié)的學(xué)習(xí) C 語言的幾個步驟呀酸,其他編程語言基本類似,希望對大家有所幫助琼梆。
1. 看書
學(xué)習(xí)一門編程語言少不了先學(xué)習(xí)基本語法性誉。
C語言的語法也就是變量,數(shù)組叮叹、指針艾栋、表達(dá)式、邏輯操作蛉顽、函數(shù)蝗砾,宏定義等等。學(xué)習(xí)這些先買一本入門級書籍携冤,其實(shí)大都差不多悼粮,最經(jīng)典的就是譚浩強(qiáng)的那本了,雖然在知乎上沒少被人黑曾棕,但是畢竟流行了這么多年扣猫,總歸是有可取之處的,其實(shí)作為入門書翘地,你不能指望從它里面得到你想知道的所有東西申尤。
除了基本語法,C 語言另一部分是標(biāo)準(zhǔn)庫衙耕。
這一點(diǎn)很少被C語言入門書提及昧穿,但是你要想寫出一個像樣的程序的話,標(biāo)準(zhǔn)庫必不可少橙喘。推薦這本世界級C語言專家編寫的《C標(biāo)準(zhǔn)庫》时鸵。
替換高清大圖
請點(diǎn)擊此處輸入圖片描述
2. 寫代碼練習(xí)
要想學(xué)好一門編程語言,看書遠(yuǎn)遠(yuǎn)不夠厅瞎,一定要把書里的代碼搬到電腦里饰潜。
相信大多數(shù)人都是使用的Widnows,那么就下載安裝一個Visual Studio吧和簸,用哪個版本彭雾?最新的 VS2017 毋庸置疑。
喜歡 Linux 的朋友锁保,就先下載 Glibc 庫冠跷,然后安裝 gcc, gdb南誊。
好了,有了開發(fā)環(huán)境蜜托,接下來一切變得簡單,并且好玩霉赡。
試著寫一些簡單的代碼橄务,比如 Hello World,文件讀寫穴亏,數(shù)學(xué)操作蜂挪,常用算法,等等嗓化。
這是我以前練手時寫的
請點(diǎn)擊此處輸入圖片描述
3. 總結(jié)心得體會
把你覺得很抽象棠涮、難以理解的東西放到 VS 里面進(jìn)行調(diào)試,會有很多發(fā)現(xiàn)刺覆。我以前電腦里就經(jīng)常會有一個名字叫 Test 的工程文件夾严肪,哪里有疑惑了,就把代碼放進(jìn)去谦屑,一 Debug驳糯,全部的疑云就解開了。
比如這樣氢橙,了解 Struct 內(nèi)存結(jié)構(gòu)
請點(diǎn)擊此處輸入圖片描述
比如這樣酝枢,了解 Union 的內(nèi)存結(jié)構(gòu)
請點(diǎn)擊此處輸入圖片描述
比如這樣,了解 指針和數(shù)組
請點(diǎn)擊此處輸入圖片描述
然后把這一切悍手,記錄在一個 Word 中帘睦,這樣知識就變成自己的了。
這是我從前總結(jié)的一個文檔
請點(diǎn)擊此處輸入圖片描述
4. 寫個小作品
基本知識掌握的差不多了坦康,試著寫個小程序竣付。
看著人生第一個自己開發(fā)的程序,會有很多的成就感涝焙,并且在寫程序的過程中卑笨,你的編程能力會有質(zhì)的飛躍。
我曾經(jīng)寫過一個控制臺的五子棋游戲仑撞,可惜年代久遠(yuǎn)赤兴,現(xiàn)在已經(jīng)打不開了。
另外需要說明的是隧哮,想在 Windows 上寫一個有界面的程序的話桶良,還需要學(xué)習(xí)Windows API,不過這仿佛是 C 語言之外的東西了沮翔,單單學(xué)習(xí) C 語言陨帆,一個控制臺程序就夠了。
最后一句話作為總結(jié),想要使自己的編程能力突飛猛進(jìn)疲牵,一定要不斷地勤加練習(xí)承二。
請點(diǎn)擊此處輸入圖片描述
請點(diǎn)擊此處輸入圖片描述