學習C語言會耽誤學C++嗎?
想考專插本,有的學校是考C語音,有的是考C++ 但目前還沒想好考哪所學校,手裡頭只有C語言的教材,如果到時要轉C++的話,現在學習C是否會影響對C++的理解與學習?
習慣了C語言,就容易把C語言的一些看起來好的習慣,which 在C++裡面是陋習,帶進C++里。如果你的目標是C++,那你打可以直接從C++開始,難度不會有任何變化。
不會。都是裸奔的語言,只不過裸奔的姿勢不一樣而已。
我是一名工作多年的C/C++軟體工程師。
我的學習路線就是先是 C 再是 C++, 負責任告訴你,一點影響都沒有。
C 是 C++ 的基礎,C 的所有東西在C++裡面都能用。
C++ 只不過在C之上,額外加了一些東西。
《Effective C++》中的條款01感覺就可以幫助題主解決問題,習慣C++,即
View C++ as a federation of languages.
把C++看作成一個語言聯邦而非單一的語言,即
- C語言
- Object-Oriented C++(C with class)
- Template C++(generic programming)
- STL
每個次語言都有自己的編程守則和規約,使用哪一部分(次語言)視情況而變化。
具體第一條目內容可參考:Item 1: View C++ as a federation of languages -CodeIdol根據碩爺的說法,cpp的多範式,他最常用的是better c和少量的泛型。我看了看muduo的源碼,很多地方cpp是作為操作系統原生c api的wrapper出現的,只做薄薄一層raii封裝,極少出現oo和元編程。大概這個與伺服器並發編程的應用場合有關。這種場合下,顯然應該c和cpp都學,兩手都要硬。但是你如果去看vczh搞得那個vlpp或者gaclib庫,基本上和c語言那一套就沒什麼關係了,因為本質上ui庫就是個oo範式最好用的場合。所以他天天推薦別人不要學c那些東西。
如果你看的是看linux源碼,就會發現裡面是手工用c實現了cpp的oo對象模型和虛函數,大概是工具限制的某種無奈之舉。
我自己是覺得,反正c就那點東西,比cpp的語言特性少了一個數量級,沒有什麼學了c就毀一生的道理。所以放心去看書就行了以前以為會,後來發現根本想多了,兩樣我都學不會嘛……
你信不信,出題老師未必分的清C++和C?
輪子哥是C++腦殘粉大家都知道。
不能因為人家是大V就完全相信,你去問Linus他還給你推薦C呢。學了C會影響C++大概是一些特殊的習慣會代入C++,但是這是自己判斷能力的問題,不是C語言自己的問題。C++相比C,提供了很多不同的選擇,以讓代碼更安全、更美。
但是自己沒有分辨能力瞎寫,那也不要怪C,是自己懶。
究竟什麼場景用什麼,得自己判斷,這個能力沒有,也不可能「學會」C++。
事實上「簡單」的學一下C和C++,然後比較它們的區別,再去搜一搜,為什麼C++要在這點上跟C不一樣,這也不失為一種好方法啊。
到OOP的部分,還可以再跟JAVA對比一下,再找找為什麼JAVA要在某些方面跟C++不同,他們各自的優缺點在哪。只要你在這個上面花費足夠多的精力和時間,你就會發現
考研考不上了如果只是為了考試,你的c++大概也就是c+class的要求,離輪子說的c++還遠著,放心隨便學吧
會。雖然名字差不多,但是這兩個語言的差別大概類似普通話和上海話的差別。不懂的人看都是中文,但是實際是兩個語系。
如果不是以使用 C++ 為最終目標,建議學 C。指針,堆,棧的概念,C 暴露的更簡潔直白。
C++ 為了解決複雜性問題引入了更多複雜。只是為了一個廉價的工作的話,試試 JAWA。
題主不要擔心,c也學不會的(●°u°●) 」
半夜被這個問題嚇死了,還是先看部鬼片壓壓驚吧...
有幫助,不會耽誤的.而且學C++必然包含學C的過程.
學習任何一種語言都是對你學習能力的一種提升,不然你想一輩子寫C++嗎?
沒什麼影響
會,特別是學了C以後遲遲不去接觸那些高級一點的、面向對象的語言的話。比如本人到現在都只熟悉C和彙編,C++都是離開學校以後通過MFC去自己學,Java純粹是為了混學分而已,考試及格以後就再也沒翻過書,C#當時選修課想報,後來不知什麼原因沒選成。至於別的語言比如Python,本人一直有偏見,一直覺得它們都是給非專業人士用的,所以從來沒碰過。Java我一直就沒有好感,因為那是我學完C以後學的第一種面向對象語言,感覺雖然語言高級了但卻把編程搞得抽象了,還不如C容易理解,怎麼也學不進去,再加上後來Oracle的事情。現在搞得看見名字裡帶個「Java」的東西就煩,包括JSP、JavaEE。另外,千萬別學譚浩強,遇到*.c編譯不過就把後綴改成*.cpp。
我覺得對我來說唯一的負面影響是讓我在寫cpp的時候很喜歡用c的lib
推薦閱讀:
※計算機技術行業從業的門檻高嗎?
※在C++中,a==b和b==a有沒有什麼區別?
※想轉計算機,我還有希望么?
※寫編譯器的作用?
※為什麼這麼多人喜歡寫編譯器?