詳解C語言和C++最大的區別,附帶新手學習建議

首先,我們來看看C語言與C++的概念:

1. C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有彙編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用範圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適於編寫系統軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。

2.

1) C++這個詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。 它是一種使用非常廣泛的計算機編程語言。C++是一種靜態數據類型檢查的、支持多重編程範式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、泛型程序設計等多種程序設計風格。

2) 隨著軟件規模的增大,用C語言編寫程序漸漸顯得有些吃力了。

C++是由AT&T Bell(貝爾)實驗室的Bjarne Stroustrup博士及其同事於20世紀80年代初在C語言的基礎上開發成功的。 C++保留了C語言原有的所有優點,增加了面向對象的機制。

C++是由C發展而來的,與C兼容。用C語言寫的程序基本上可以不加修改地用於C++。從C++的名字可以看出它是C的超越和集中。C++既可用於面向過程的結構化程序設計,又可用於面向對象的程序設計,是一種功能強大的混合型的程序設計語言。

C++對C的“增強”,表現在六個方面:

(1) 類型檢查更為嚴格。

(2) 增加了面向對象的機制。

(3)增加了泛型編程的機制(Template)。

(4)增加了異常處理。

(5)增加了運算符重載。

(6)增加了標準模板庫(STL)。

面向對象程序設計,是針對開發較大規模的程序而提出來的,目的是提高軟件開發的效率。不要把面向對象和麵向過程對立起來,面向對象和麵向過程不是矛盾的,而是各有用途、互為補充的。

學習C++,既要會利用C++進行面向過程的結構化程序設計,也要會利用C++進行面向對象的程序設計,更要會利用模板進行泛型編程。

C和C++的區別:

1 C是一個結構化語言,它的重點在於算法和數據結構。C程序的設計考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

2 C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”。

詳解C語言和C++最大的區別,附帶新手學習建議

C語言C++

分析C++與C的不同:

一、類,類對於初學者,它是一個累贅。類的封裝使得初學者對程序產生厭倦,感到不適和麻煩。

二、引用,引用是C++中最好儘量不要用它,除非萬不得已。引用對於初學者就更容易產生混淆,不知道哪個是引用,哪個是變量。

三、函數的重載,初學者學函數的重載好像沒什麼壞處,但是,這會使初學者潛意識裡對C語言的變量類型的重要性產生淡化,要記住C語言是對變量類型最敏感了的,變量的類型在C語言裡的重要性是不言而喻的。

四、流操作符,和上面同樣的道理,使得對變量類型的重要性產生淡化,有時會產生使初學者莫名其妙的結果。

五、操作符重載,典型的高級應用,初學者可能根本用不著,這個東東會讓他們覺得C++很難,門檻高,看不懂。

六、繼承,以及虛函數,看起來深奧,實用價值很低。

七、誤區::

問:C++是面向對象化的而C是面向過程化的?

答:第二對,第一問錯,C++並非完全面向對象化,真正的面向對象化的語言恐怕只有Java才算得上。

問:C++能實現C所不能的功能嗎?

答:至少我還沒有發現

問:學了C再學C++有障礙嗎?比如程序設計思想

答:至少我還沒有看見誰有此症狀。

問:學了C再學C++又要重頭開始嗎?

答:不,C++下可以實現C語言的一切功能。

問:我學完了C一定還要學C++才能編程嗎?

答:完全沒必要。

問:C++比C好在哪裡?

答:更加符合軟件工程學

問:學完了C再學C++是不是很容易?

答:那要看你是不是真正的學完了C語言。

C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”,而就語言本身而言,在C中更多的是算法的概念。那麼是不是C就不重要了,錯!算法是程序設計的基礎,好的設計如果沒有好的算法,一樣不行。而且,“C加上好的設計”也能寫出非常好的東西。

對語言本身而言,C是C++的子集,那麼是什麼樣的一個子集?從上文可以看出, C實現了C++中過程化控制及其它相關功能,而在C++中的C(我稱它為“C+”),相對於原來的C還有所加強,引入了重載、內聯函數、異常處理等等玩藝兒,C++更是拓展了面向對象設計的內容,如類、繼承、虛函數、模板和包容器類等等。 再提高一點,在C++中,數據封裝、類型這些東東已不是什麼新鮮事了,需要考慮的是諸如:對象粒度的選擇、對象接口的設計和繼承、組合與繼承的使用等等問題。

所以相對於C,C++包含了更豐富的“設計”的概念,但C是C++的一個自洽子集,也具有強大的功能,同樣值得學習

幾點學習建議:

1.基本概念很重要。無論學C,還是學C++,基本概念都是第一位的,也是比較困難的,但只有把握了基本概念才能把握整體脈絡,才能居高臨下。

2.C是C++的子集,它的基本概念和設計方法相對比較容易理解,初學者可從它入手。

3.如果要學好C++,建議初學者最好別在如VC,BCB平臺下寫程序,那種自動化的代碼生成,花花綠綠的界面,會讓你手足無措。最好先找一片空地(unix,dos),從頭做起,寫幾個大點的程序,數個回合,再到VC,BCB下看看,你會輕鬆得很。在我看來,學好C/C++是成為VC,BCB高手的必由之路。

4.不要妄想速成,必須得一個byte,一個bit的去摳,儘量搞清楚每一個問題。

詳解C語言和C++最大的區別,附帶新手學習建議

C語言C++

加C/C++學習交.流群獲取C語言、C++、Windows高級編程,MFC框架編程、QT框架編程,大型企業實戰項目。Linux應用程序開發,Linux內核研究等多個知識點高級進階乾貨的直播免費學習權限 都是大牛帶飛 讓你少走很多的彎路的 群...號是 546912356

注:加..群要求

1、零基礎,目前遇到困難不知從何下手可以加。

2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。

3、基礎非常紮實,但對目前主流技術欠缺,需要突破技術瓶頸的可以加。

4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5.企業一線C/C++高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!

相關推薦

推薦中...