1. 程式人生 > >學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 Plus Plus”的簡稱。顧名思義,C++是在C語言的基礎上增加新特性,玩出了新花樣,所以叫“C Plus Plus”,就像 iPhone 6S 和 iPhone 6、Win10 和 Win7 的關係。從語法上看,C語言是C++的一部分,C語言程式碼幾乎不用修改就能夠以C++的方式編譯,這給很多初學者帶來了不小的困惑,學習C++之前到底要不要先學習C語言呢?關於怎麼快速學C/C++遊戲程式設計,有什麼方法,這個問題,想必大家都已經心中有數了,但是初學者直接學習C++會非常吃力,Hold 不住,尤其是對計算機記憶體不太理解的情況下,C++ 是學不懂的。C++ 是一門靈活多變、特性豐富的語言,同時也意味著比較複雜,不易掌握。不過可以明確地說:學了C語言就相當於學了C++的一半,從C語言轉向C++時,不需要再從頭開始,接著C語言往下學就可以,所以我強烈建議先學C語言再學 C++。

(小編推薦一個學C/C++的學習群892643663,入群即送C/C++全套學習資料,滿滿的乾貨!)

二、C++和C語言的血緣關係

現在看來,C++和C語言雖然是兩門獨立的語言,但是它們卻有著扯也扯不清的關係。早期並沒有“C++”這個名字,而是叫做“帶類的C”。“帶類的C”是作為C語言的一個擴充套件和補充出現的,它增加了很多新的語法,目的是提高開發效率,如果你有Java Web開發經驗,那麼你可以將它們的關係與 Servlet 和 JSP 的關係類比。這個時期的C++非常粗糙,僅支援簡單的面向物件程式設計,也沒有自己的編譯器,而是通過一個預處理程式(名字叫 cfront),先將C++程式碼”翻譯“為C語言程式碼,再通過C語言編譯器合成最終的程式。隨著C++的流行,它的語法也越來越強大,已經能夠很完善的支援面向過程程式設計、面向物件程式設計(OOP)和泛型程式設計,幾乎成了一門獨立的語言,擁有了自己的編譯方式。我們很難說C++擁有獨立的編譯器,例如 Windows 下的微軟編譯器(cl.exe)、Linux 下的 GCC 編譯器、Mac 下的 Clang 編譯器(已經是 Xcode 預設編譯器,雄心勃勃,立志超越 GCC),它們都同時支援C語言和C++,統稱為 C/C++ 編譯器。對於C語言程式碼,它們按照C語言的方式來編譯;對於C++程式碼,就按照C++的方式編譯。從表面上看,C、C++ 程式碼使用同一個編譯器來編譯,所以上面我們說“後期的 C++ 擁有了自己的編譯方式”,而沒有說“C++ 擁有了獨立的編譯器”。

如果針對沒有任何程式設計經驗的讀者寫一本C++的書,那將是一項不小的任務,寫出來的書也會非常厚。即使這樣,也僅僅是在講語法。更重要的是,這些知識你很難全部吸收,會嚴重打擊你的信心,失去學習的興趣。

三、小編的建議
看你的需求,如果是底層開發,就必須學習C語言。如果只是應用開發,可以直接從C++開始學習。實際上這兩個語言是平等的,只是在語法上C++儘量與C相容,但仍然有很多不同的地方。
1、 C++不是C的超集。也許最初誕生的時候可以這麼認為,但是當1998年ISO制訂了C++的標準之後,C++和C就是沒有太大關係的兩種語言了。C++中包含了儘量與C相容的子集。
2、 如果你選擇了一本好書,學C++之前完全沒有必要學C,即使是對C一竅不通也沒有問題。過去的很多C++的書籍都是假設讀者有C的基礎,在此情況下,當然有必要選擇先學C。
3、 至於學C++要懂一定的編譯、作業系統、資料結構。那與C和C++無關,如果非學不可,那麼學PASCAL也要學,學java也要學,任何學程式設計的都要學。資料結構是程式設計的必修課,但是作業系統和編譯原理只能是選修課。
4、沒有任何程式設計基礎的讀者,我建議先從C語言學起,不要貪多嚼不爛。有程式設計基礎的讀者,相信你自己能做出正確的判斷。學習程式設計是一個循序漸進的過程,不要期望一口吃個胖子。學習C語言,一來是學習它的語法,為C++打基礎,同時培養程式設計興趣,二來是學習記憶體、編譯和連結,弄清程式語言的內在機理。每個初學者都經歷過這樣的窘境:已經學習了語法,明白了程式語言都有什麼,也按照教程敲了不少程式碼,但是遇到實際問題就掛了,沒有思路,不知道從何下手。說白了就是隻會學不會用。關於怎麼快速學C/C++遊戲程式設計,有什麼方法,這個問題,想必大家都已經心中有數了,打算深入瞭解這個行業的朋友,可以加下小編的C/C++遊戲程式設計學習群:892643663,邀請碼(CSDN)不管你是小白還是大牛,小編我都歡迎,不定期分享乾貨,歡迎初學和進階中的小夥伴究其原因,就是實踐少,沒有培養起程式設計思維!學習知識容易,運用知識難!等你熟悉了C語言,能編寫出上百行的程式碼,就對程式設計有些概念了。這個時候再去了解C++究竟在C語言基礎上增加了什麼,你就站在了一定的高度。從“學院派”的角度來說,C++支援面向過程程式設計、面向物件程式設計和泛型程式設計,而C語言僅支援面向過程程式設計。就面向過程程式設計而言,C++和C幾乎是一樣的,所以學習了C語言,也就學習了C++的一半,不需要從頭再來。

四、這些是C/C++能做的
伺服器開發工程師、人工智慧、雲端計算工程師、資訊保安(黑客反黑客)、大資料 、資料平臺、嵌入式工程師、流媒體伺服器、資料控解、影象處理、音訊視訊開發工程師、遊戲伺服器、分散式系統、遊戲輔助等

(小編推薦一個學C/C++的學習群892643663,入群即送C/C++全套學習資料,滿滿的乾貨!)