這是一個(gè)大家可能會(huì)想問的問題,C語言和C++是完全兩個(gè)編程語言,C++在發(fā)明之初也是為了完全兼容C而增加了面向?qū)ο蟮男绿匦裕瑥拿?+可以看得出來,是更”高級(jí)“的,C語言是C++的子集。
首先從大的不同上來講,C語言是結(jié)構(gòu)化的編程語言,是面向過程開發(fā)的,定位是寫系統(tǒng)、驅(qū)動(dòng)、各種庫等等
C++是面向?qū)ο箝_發(fā),工程化、實(shí)例化的思想,更多開發(fā)應(yīng)用層的軟件、PC程序、系統(tǒng)服務(wù)等等
這是兩者因?yàn)槎ㄎ缓捅举|(zhì)不同而引起的最大的不同
其次而除去以上所講的兩種語言的本質(zhì)和定位最大的不同之外,C++可以說和C語言是高度相似的,比如除了有自己的cout和cin的輸入輸出之外,也完全支持C語言的printf和scanf函數(shù)輸入輸出。為了更好理解,我們給大家列舉一些具體的不同,如:C++中有默認(rèn)函數(shù)參數(shù)、有函數(shù)重載、動(dòng)態(tài)開辟內(nèi)存用new和delete而不是C語言中的malloc和free,還增加了引用類型、命名空間等等,隨著每次C++新標(biāo)準(zhǔn)的發(fā)布,所支持的關(guān)鍵詞也更多,新的特性也更講多
因此大家可以通過這兩方面去了解兩者的區(qū)別
那么如何選擇學(xué)習(xí)的語言呢?
若是考慮應(yīng)用場景,若是內(nèi)核驅(qū)動(dòng)等系統(tǒng)層的開發(fā),那么毫無疑問必然是C語言,如果是應(yīng)用軟件、甚至系統(tǒng)服務(wù),則可以考慮C++。
若是初學(xué)編程,就目前國內(nèi)大學(xué)軟件專業(yè)的安排來看,初學(xué)還是首選C語言,這是咱們國家老一輩教育家、計(jì)算機(jī)專家深思熟慮之后的安排,必然有它的高瞻遠(yuǎn)矚,大家學(xué)過幾年之后就會(huì)明白學(xué)C語言的好處以及其中的良苦用心。
最后單說一種情況,關(guān)于競賽,眾所周知中學(xué)生到大學(xué)生參加的Noip、藍(lán)橋杯、ACM等程序設(shè)計(jì)競賽,普遍都是支持C/C++/JAVA三種語言,因?yàn)镃++強(qiáng)大的STL庫能力讓所有初學(xué)者首選C++作為參賽語言,而一股腦的學(xué)習(xí)C++,這里筆者談?wù)勛约旱目捶?,首先競賽中的問題都是不需要面向?qū)ο蟮?,也就是無需要類對(duì)象這些C++中面向?qū)ο蟮母拍睿虼撕芏喔傎愵惖慕滩摹①Y料都是只安排C++中不包含面向?qū)ο蟮?這樣方便學(xué)生減少對(duì)語言語法的學(xué)習(xí)負(fù)擔(dān),而有更多的時(shí)間去學(xué)習(xí)算法知識(shí).這是沒問題的.但在初學(xué)的順序上,筆者還是建議先學(xué)習(xí)C語言,然后進(jìn)行適當(dāng)?shù)乃㈩}訓(xùn)練,讓初學(xué)者和C語言有所磨合之后,可以再學(xué)習(xí)C++,學(xué)習(xí)C++中的輸入輸出、變量類型等等,這樣”從低到高、從弱到強(qiáng)“對(duì)于我們感受兩種語言的區(qū)別,與半個(gè)世紀(jì)前C++誕生的初衷共鳴,這樣更有升華效果.
歡迎各位經(jīng)歷者留下觀點(diǎn)~
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程