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的擴充套件,不過現在兩個都各自有發展,所以現在的C++與現在的C沒有誰是誰的擴充套件的關係。 現在有人說C和C++是大熊貓和小熊貓的關係,也就是說只是名字相近——這多少有欠公允。不過C和C++的確是有巨大區別的,C語言簡單有效,但處理大問題就很麻煩像把左輪手槍;而C++則簡直是一輛坦克,功能齊備,但更肥大——無非都是兵器而已。至於說學習上C是C++的基礎,倒是一大誤區,槍械和火炮長得可能有點像,甚至也有點淵源,但終究全不是一回事。 先學C,後學C++有好處也有壞處,應該說至今仍有爭論。 我的看法是,如果是做應用軟體一類的程式設計,就不應該先學C,而且應該在初學時少接觸C的舊式程式設計風格,而是把大部分精力放在C++的標準庫(包括基於STL的程式設計,這方面國內一般的教材最欠缺),以及基於物件和麵向物件的程式設計上。這是因為C++的這些應用從程式設計方式到程式碼風格都與C語言大相徑庭,初學養成C式的程式設計習慣就很改掉,反而限制對類和泛型程式設計的理解。 如果是想接觸比較底層的東西,以後做軟體庫開發、系統程式設計之類,那麼學C語言,尤其是一些像宏、指標、記憶體管理等知識就很有好處(這些東西在前一種應用中卻都要儘量避免)。但先學C的好處並不明顯,因為直接學C++同樣可以學到這些東西,只要改變一點學習側重就可以了。 上面是從應用方向角度說的。至於學習的困難程度,直接學C++並不難,而且在一些方面更簡單一些;只不過C++的內容比C多罷了。C++的創始人Stroustrup就大力提倡不要學C,並列舉了先學C的種種壞處。因此我的意見也是不學C,直接學C++。 現在國內講C++的書一般是先講與C相似的一塊,後講C++獨有的內容,沒有融合在一起,看似C成了“基礎”。其實這種講法主要是由於國內編教材的教師多是學C語言(甚至機器碼、彙編)出身的,可能到很晚才接觸C++,因而有思維定勢。其實看國外許多教材,一入門就強調類的概念,入門不多久就大量用到STL,過程式的語法與這些一塊講,同樣也很直觀(物件的概念實際上比函式的概念直觀得多),可以學得通。
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的擴充套件,不過現在兩個都各自有發展,所以現在的C++與現在的C沒有誰是誰的擴充套件的關係。 現在有人說C和C++是大熊貓和小熊貓的關係,也就是說只是名字相近——這多少有欠公允。不過C和C++的確是有巨大區別的,C語言簡單有效,但處理大問題就很麻煩像把左輪手槍;而C++則簡直是一輛坦克,功能齊備,但更肥大——無非都是兵器而已。至於說學習上C是C++的基礎,倒是一大誤區,槍械和火炮長得可能有點像,甚至也有點淵源,但終究全不是一回事。 先學C,後學C++有好處也有壞處,應該說至今仍有爭論。 我的看法是,如果是做應用軟體一類的程式設計,就不應該先學C,而且應該在初學時少接觸C的舊式程式設計風格,而是把大部分精力放在C++的標準庫(包括基於STL的程式設計,這方面國內一般的教材最欠缺),以及基於物件和麵向物件的程式設計上。這是因為C++的這些應用從程式設計方式到程式碼風格都與C語言大相徑庭,初學養成C式的程式設計習慣就很改掉,反而限制對類和泛型程式設計的理解。 如果是想接觸比較底層的東西,以後做軟體庫開發、系統程式設計之類,那麼學C語言,尤其是一些像宏、指標、記憶體管理等知識就很有好處(這些東西在前一種應用中卻都要儘量避免)。但先學C的好處並不明顯,因為直接學C++同樣可以學到這些東西,只要改變一點學習側重就可以了。 上面是從應用方向角度說的。至於學習的困難程度,直接學C++並不難,而且在一些方面更簡單一些;只不過C++的內容比C多罷了。C++的創始人Stroustrup就大力提倡不要學C,並列舉了先學C的種種壞處。因此我的意見也是不學C,直接學C++。 現在國內講C++的書一般是先講與C相似的一塊,後講C++獨有的內容,沒有融合在一起,看似C成了“基礎”。其實這種講法主要是由於國內編教材的教師多是學C語言(甚至機器碼、彙編)出身的,可能到很晚才接觸C++,因而有思維定勢。其實看國外許多教材,一入門就強調類的概念,入門不多久就大量用到STL,過程式的語法與這些一塊講,同樣也很直觀(物件的概念實際上比函式的概念直觀得多),可以學得通。