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