學C語言還是學C+好?兩者有什麼區別?需要什麼開發環境?

2020-12-16 騰訊網

C++是C語言的擴展,它融合了3種不同的編程傳統——C語言代表的過程性語言傳統、C基礎上添加的類代表的面向對象(OPP)語言的傳統、C++模板支持的通用編程傳統。 ——《C++ primer plus(5th)》

C++在C的基礎上添加了opp和通用編程特性,但沒有對C組件做大的改動,所以它是C的超集。所以它們也可以廣義稱為C語言。

但是它們的程序設計哲學卻差別很大,C是問題來適應語言;C++是語言適應問題;所以也可以說是兩種語言。

至於先學C還是先學C++,專家也意見不一,主要是因為:相對打基礎來說,彙編無疑是重要的,但 畢竟太生澀,所以C是最好的選擇,而且不論何種語言,算法仍然是核心,而C最適合培養算法素養。

而對於C++來說,先學習C,可能會形成慣性思維,過分強調過程算法,雖然這也是重要的,可對於OPP來說,難免忽略了C++的優異特性未免浪費。

如果以後只想搞搞個人應用或者熱愛計算機技術,先學C無疑是對的,到一定程度再學彙編,這兩門搞好,破解軟體、個人應用就不錯了,

如果有興趣遊戲開發,再學C++,如果對網頁開發有興趣,那就直接學JAVA。C++據說全世界沒有一個程式設計師能真正完全掌握它。

C和C++代碼要通過一個編譯器把它翻譯成機器指令,然後由連接器加入相關庫代碼和系統啟動代碼形成目標作業系統的可執行文件格式,即windos的EXE或Linux的BIN文件。這組工具加上相關的函數庫也就可稱為開發環境。

Visual C++也就是一種開發環境,所謂windows窗口類,可以理解為是一個圖形函數庫,它支持C++語言使用圖形函數來繪製窗口,添加窗口組件如窗口菜單等。

由於C++是C的超集,所以Visual C++同樣可以編譯純C語言,可以作為C語言的編譯工具。

C和C++都有很多系統平臺的編譯器,如windows的VC++,linux的Gcc等等,所以如果源碼中如果僅僅只使用自編的函數模塊和標準庫函數的話,它們可以不修改或很小的改動就可以在平臺間通用,執行結果一模一樣。如果使用了系統調用、不能通用的圖形庫和函數庫就不行了。

還有很多的免費編譯器可選擇,主要是看它們是否符合現在的ANSI C\C++標準。VC++屬於商業軟體,是要收費的(當然可以盜版用於個人應用是沒啥的),GCC是GNU自由軟體,無須註冊付費。

它也有Windows版本,MAME街機模擬器、DOSbox的Windows版本就需要使用Gcc在Windows下編譯,VC++是不行的,圖形庫也可以使用Gtk+

(免費,跨平臺,可用於開發商業應用而無須支付版權費)的windos版本等。

其實計算機語言不等於計算機技術,語言沒有優劣之分,只有更適用於實現某種技術。語言是最基本的工具,加上更多其它的東西才構成技術。

相關焦點

  • 搭建C語言開發環境,其實只需要兩個工具就行了!
    在手打代碼之前,我們當然要先搭建自己的開發環境,對於c語言的學習來說,其實只需要兩個工具就行了,那就是文本編輯器和c編譯器了。所以在c語言開發的時候,一般使用專門的文本編輯器進行開發,現在常用的文本編輯器主要有:用於Windows系統的Notepad,用於Linux/UNIX系統的vi/vim等,用這些專門的c語言文本編輯器敲的代碼就是我們常說的程序源碼,其格式一般為.c。
  • C語言?c+?到底先學哪個才能更好的理解編程,這些你造嗎
    首先很多人覺得C語言是c++的子集,覺得直接學習c++就可以了,還要花費一個學期的時間先學C語言有必要嗎? 本身C語言和c++的編程方法不同,一個面向過程,一個面向對象。而要做出大型的、複雜的、精彩的程序,面向對象的語言就更適合。所以要學習c++這樣的語言。但是,1.c語言是好多學校的基礎課;2.c語言很容易描述算法;3.軟體開發過程中也有很多面向過程的開發,以及模塊化程序設計思想。要學習這些,比起學c++的複雜、困難程度,學c語言就可以達到上述目的。
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    許多小夥伴在學完C語言後想入門單片機,但學著學著發現明明都是C語言,為什麼單片機C語言和我當初學的C語言有差異呢?今天小編就來梳理我們平時所學的C語言與單片機C語言的有什麼樣的不同。
  • python與c語言的語法有哪些不一樣的
    在眾多程式語言之中,想必很多人都聽說過Python和C語言,在進行編程學習之前,大家都會問:python和c語言的區別有哪些?我該如何選擇?接下來我們來看看吧。4、速度:Python程式語言因為歷史原因,有一個GIL鎖,導致其對多線程支持不夠好,運行速度較慢;C語言比較快,是比較底層的語言,運行效率優於Python。5、複雜度:在Python中,不需要聲明變量類型,而在C中,必須聲明變量類型;Python程序更易於學習、編寫和閱讀,C程序語法比Python難。
  • 想學編程?先來理解一下C語言的Helloworld程序吧
    相信每一個學過任何程式語言的小夥伴都是從編寫出一個能夠輸出Helloworld的小程序開始的。當你能夠在一個空文本中純手打,寫出一個完整的Helloworld程序,並理解文檔中所有英語單詞、括號的含義之時,你就已經打開了編程之門,踏上了獻祭頭髮獲取力量的道路。廢話少說,我們來介紹一下Helloworld吧!
  • CSharp與C語言的3大不同點詳解,越對比學得越快
    很多開發項目中我們會使用C#,但是很多開發中我們也離不開C語言和C++,很多的時候,我們需要將這些個開發語言結合起來進行相關的學習。如果在學習中,我們能夠快速找到相關的語言之間的區別,那是最好的了。今天我們就把總結的C#和C語言和C++相關的區別為大家總結一下,後續如果還有相關的總結筆記的話,咱們再進行相關的內容的補充吧。
  • C語言怎麼樣?今天聊聊C語言的發展史!
    不知道你有沒有想過,大家都用C語言或基於C語言的語言來寫編譯器,那麼世界上第一個C語言編譯器又是怎麼編寫的呢?這不是一個「雞和蛋」的問題…… 回顧一下C語言歷史:Tomphson在BCPL的基礎上開發了B語言,Ritchie又在B語言的基礎上成功開發出了現在的C語言。
  • C語言你學「廢」了嗎?
    大一學計算機,一上來編程老師為了提起我們對計算機編程的興趣,先來一遍「Hello word」。然後你慢慢的進入老師的節奏,初識C語言 / 了解C語言的發展史,搭建C開發環境認識一個簡單的C程序 / 一般都從「Helloworld"這個簡單的C程序開始算法入門 / 算法基本概念,簡單程序結構
  • 把英語當作知識來學與當作語言技能訓練有什麼區別?
    把英語當作知識來學與當作語言技能訓練有什麼區別?同樣的一條英語內容,有人把它當做「英語知識」來學,有人則把它當做「英語技能」來訓練。只把,或者永遠把英語當知識學的人最後會發出來的的「呼聲」自然就是:學英語沒有用、用不上。或者:讓英語徹底滾蛋,滾出中國的教室。
  • 用C語言編寫屬於自己的程式語言,大一學完C語言即可做!
    首先,明確一點,咱這個項目只是做一個簡單的腳本語言而不是編譯型語言!!!其次,本文不需要太多專業知識,所以不慌。最後,本文只是簡單實現腳本語言,雖然不牛X......實驗環境 : linux2.知識點 : 大一所學 C語言 知識二 要做功能:1.實現語法分析列印 hello-world
  • 世界上最難學的語言是什麼?
    聯合國教科文組織公布的世界十大難學語言中,漢語名列榜首。想想我們都學會了世界上最難的語言了,你還怕別的嗎?來看看各國群眾認為什麼語言才是天書吧!發音優美的語言在國際語言學界,日語,義大利語和西班牙語,是三個公認的發音優美的語言,其中,日語更是排在第一位。
  • 【揭秘】C語言類型轉換時發生了什麼?
    在C語言中,數據類型指的是用於聲明不同類型的變量或函數的一個廣泛的系統,我們常用的算術類型包括兩種類型:整數類型和浮點類型。那麼相互之間具體是怎麼轉化的呢? 對於某些類型的轉換,編譯器可以隱式地自動進行,這種轉換稱為自動類型轉換; 而有些類型轉換需要程式設計師顯式指明,那麼通常把這種轉換稱為強制類型轉換。
  • C語言中「c=a+b」,這種結構合理嗎?
    C語言會同意一些"令人震驚"的結構,下面的結構是合法的嗎,我們來看看幾個例子。 c = a+++b; 以下代碼是合法的嗎,咋的一看不禁有這樣的疑問?
  • RubyMotion之父:Ruby是目前替代Objective-C的最佳iOS開發語言
    這倆兄弟有啥區別嗎?L:我覺得沒問題。當然,兩者雖然都是我創建的,但能夠獲得現在的成績肯定離不開大量開發者的幫助。兩者之間最主要的區別首先在於針對的平臺不同,其次是RubyMotion是100%的靜態編譯,為了照顧iOS設備的處理能力以及App Store的限定規則;而MacRuby則是JIT編譯,得益於Mac平臺相對更強大的處理能力。
  • C語言在遊戲開發中起到什麼作用?
    一、 C語言的總體C語言是非常多語言的基礎,C++,JAVA等都包含在其中,C語言可以編寫作業系統和應用軟體,是十分重要的開發語言。二、 C語言在遊戲開發中的優點:1. 強大的繪圖能力。2. 適用範圍大,可移植性好。3.
  • C語言基礎(下)
    C語言的世界結構體類型什麼是結構體我們觀察現實世界的時候,可以發現很多的東西它都是由不同的部分組合起來的結構體定義時初始化struct Student{char name[10];char *gender;char *mail;int age;} student = {"泱澈", "男", "2633218009@qq.com", 21};變量定義時初始化struct Student stu;// 此時需要進行類型轉換
  • 《戰艦少女》和艦隊Collection哪個好?艦N艦C的區別
    戰艦少女作為一款艦娘同題材的遊戲,自然經常會被玩家拿來對比和艦隊Collection的區別。艦N和艦C都有哪些不一樣呢?艦C艦N哪個好?這類的問題每天都有眾多新提提出,今天我們就為大家帶來艦N艦C的區別對比詳解。
  • c語言和PHP,學哪個好?
    計科專業從事嵌入式開發多年,從現在的市場行情以及就業的機會上講php的就業空間還是大於C語言,但並不意味著C語言就已經被淘汰掉了,相反因為高級語言在應用領域使用的範圍比較廣泛,倒是顯得很多底層的程式語言成了稀缺的物種,畢竟對於底層的維護也是一項很重要的工作,況且C語言的使用範圍並不是很狹窄
  • c語言中malloc申請的空間和直接定義變量申請的空間有什麼區別?
    有很大區別。根據以前的編程經驗,要點有三點:一是空間分配的連續性;二是動態內存申請;三是防止程序執行中出現異常錯誤。以下分別說明。直接定義變量與malloc定義變量的編程含義;malloc事先分配好了內存空間。
  • 小米手機4c截圖鍵是什麼 4c怎麼截圖方法教程
    小米手機4c截圖鍵是什麼 4c怎麼截圖方法教程 來源:www.18183.com作者:皮卡時間:2015-11-23 手機截圖常常有特定的截圖工具,很多人入手了小米4c手機後不懂怎麼截圖,小米手機4c截圖鍵是什麼在哪按呢?一起來學一下小米4c截圖教程。