-
1 # 白水農村歡歡
-
2 # Marco快樂程式設計
一.技術能力上區別
c是古老語言,只支援函式編寫
c++是c的升級版,支援面向物件,支援類物件。
c#基本上和 c/c++沒有血緣關係,可以視為更高階易用的一個語言,語法與c/c++很多類似,但也有很多不同之處,像是vb和vc的結合體。
二.應用上的區別
c/c++常用於作業系統級開發,例如嵌入式,驅動程式,或高效能網路伺服器。也能做桌面開發,但近年來這塊被其他語言替代。
c# 以桌面開發為主,更簡單易學。
三.執行環境確保,c/c++在unix linux windows都有標準 c 編譯器,可直接進行原生態的系統開發。而c#只能在windows上開發。不過隨著發展越來越快,c#也能做移動手機開發等。
-
3 # 武漢朝夕教育科技
這三者不能一概而論的,就個人總結來看覺得有一下區別:
C與C++的區別
1. C 語言是面向過程的,而 C++ 是面向物件的。 2,C 語言有標準的函式庫,它們鬆散的,只是把功能相同的函式放在一個頭檔案中;而 C++ 對於大多數的函式都是有整合的很緊密,特別是 C 語言中沒有的 C++ 中的 API 是對 Window 系統的大多數 API 有機的組合,是一個集體。但你也可能單獨呼叫 API。 3,特別是 C++ 中的圖形處理,它和語言的圖形有很大的區別。C 語言中的圖形處理函式基本上是不能用在中 C++ 中的。C 語言標準中不包括圖形處理。 4,C 和 C++ 中結構體:C的結構體內不允許有函式,而C++的結構體內部允許有成員函式(允許有建構函式、解構函式和this指標),且允許這個函式是虛擬函式;C的結構體對內部成員變數的訪問許可權只能是public,而C++允許public,private,protected三種;C的結構體是不可以繼承的,C++的結構體是允許從其他結構體或者類繼承的;
4,C 語言可以寫很多方面的程式,但是 C++ 可以寫得更多更好,寫 DLL,寫控制元件,寫系統。 5,C 語言對程式的檔案的組織是鬆散的,幾乎是全要程式處理;而 C++ 對檔案的組織是以工程,各檔案分類明確。 6,C++ 中的 IDE 很智慧,和 VB 一樣,有的功能可能比VB還強。 7,C++ 對可以自動生成你想要的程式結構使你可以省了很多時間。有很多可用的工具如加入 MFC 中的類的時候,加入變數的時候等等。 8,C++ 中的附加工具也有很多,可以進行系統的分析,可以檢視 API;可以檢視控制元件。 9,除錯功能強大,並且方法多樣。
C# 語言與 C++ 的區別:
1.C# 與 C++ 比較的話,最重要的特性就是 C# 是一種完全面向物件的語言,而 C++ 是既面向過程又面向物件的語言,另外 C# 是基於 IL 中間語言和 .NET Framework CLR 的,在可移植性,可維護性 和強壯性都比 C++ 有很大的改進
([1]C++是C語言的繼承,它既可以進行C語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的面向物件的程式設計。
[2]面向物件主要是說,在系統設計和實現上用的思想,面向物件的思想的運用,就是先從系統需求中確定類,然後按類例項化物件,物件之間的通訊就實現了系統的功能。
[3]面向過程,即系統的實現是分過很多按流程或工序設計的不同功能(函式)來實現,就是先幹什麼,後幹什麼,主要是靠函式的呼叫,因為面向過程沒有物件,所以這些函式不屬於任何物件,沒有封裝、繼承等的靈活運用,系統一旦龐大,其設計和實現的複雜性和可控性跟面向物件不是一個數量級的。)
2.C#不支援多重繼承,這是與C++明顯區別的地方.
3.在標準的C#安全程式碼中不支援指標型別的操作,然而,你卻能在微軟所謂的“非安全程式碼”中操作指標型別物件。
4.C#中所有物件都只能通過關鍵詞“new”來建立,C++的“類名_物件名”方式在C#中變為宣告一個引用。呵呵,萬物皆物件,連常見的資料型別都變為物件了,JAVA味道很濃。
5.在C#裡面,陣列的元素都是存放在託管堆裡面,比起C++的在記憶體裡不確定位置申請一塊連續空間要安全得多。
6,C++的switch後跟引數必須是int型,而C#卻允許string型,這點改進覺得真的是比以前方便多了!
7.C#會禁止所有switch..case語句的失敗情形,除非case語句後是空格,否則執行了前一個case語句就算沒有break也會停止執行後面的case語句。
8.在異常處理上,C++允許丟擲任何型別,而C#中規定丟擲型別為一個派生於System.Exception的物件。
9.C++的巨集在C#中被拋棄了很多,而且也不建議使用,因此很少見。
10.C++的模板在C#裡沒有了,但在C#中我們找到了能完成模板任務的更鋒利的武器:委託。
11.C++的全域性變數這一概念沒有了,C#和JAVA類似,要把所有東西都放在類裡面,還建議使用名稱空間包含起來。
12.C#可以在定義類的時候直接給屬性賦值,而C++這麼做卻會編譯出錯。
13.C#裡有靜態建構函式一個概念,這個建構函式只執行一次,因此能夠保證一些靜態成員只被初始化一遍。
14.C#有自動垃圾收集機制,防止記憶體洩露,把C++程式設計師從繁重的記憶體管理上解放出來。
15.更強的型別轉換保護機制,比如說把float轉成uint,直接轉換0.35會變成0.34,是因為二進位制無法表示這樣的數字,使用System.Conver裡的方法,可以安全地把型別安全轉換過來。
16.委託與事件、裝箱與取消裝箱、Web Services……一大堆C++沒有的新東西,我感覺是做大型專案方便了管理,也容易擴充,但做起小型專案,由於是編譯成IL程式碼的,執行需要.NET Framework SDK支援,效率是個問題,不利於做那些對運算速度和記憶體消耗要求高的專案。
17.C# 的設計目標是用來開發快速穩定可擴充套件的應用程式,當然也可以通過 Interop 和 Pinvoke 完成一些底層操作,但是對於一些和底層系統相關很緊密的程式(譬如說驅動程式),還是建議用 C++ 來寫 18.C++ 不允許在一個建構函式中呼叫另外一個建構函式(稱為委派建構函式呼叫),而 C# 則允許。委派建構函式呼叫語法上非常自然和易懂,事實上, C++ 不提供這一特性並不是出於語法上的考慮,而是出於資源管理的考慮(這樣的事情對 C++ 來說還有很多很多)。 C++ 的建構函式用於分配資源,而解構函式用於釋放資源,建構函式和解構函式呼叫必須匹配,否則就打破了 C++ 的基本規則。如果允許委派建構函式呼叫,則顯然會打破這一規則——建構函式被執行兩次,而解構函式只執行一次。當然,對一些類,例如前面的那個 Point 來說這不是個問題,但是從語言機制的角度講這個特性可能屬於“危險”的特性。注:在最新的 C++ 標準提議草案中,Herb 等人有一個關於允許委派建構函式呼叫的提案,當然這很大程度上是為了方便 C++ /CLI 繫結。
-
4 # 小均星
從歷史的角度來講:
c語言是一門古老的語言,現代幾乎所有的CPU設計出來第一件事就是設計c語言的編譯器,所以c語言十分貼近於計算機底層。學習c語言就是學習整個計算機體系。
c++是在c語言基礎上改進的語言,它相容了大部分c語言的語法,添加了面向物件,模板超程式設計,函數語言程式設計等等許多新特性。許多c語言編寫的程式可以直接被c++使用。但由於其複雜的語法特性,學習難度十分大。
c#是微軟學習java優秀思想的基礎上設計的語言,它給學習者隱藏瞭如記憶體管理等複雜的計算機概念,對新手十分友好。同時由於有微軟爸爸的加持,它在編寫window程式方面有得天獨厚的優勢,是一門十分優秀的語言。
-
5 # 使用者95096365508
c語言是一門通用的計算機程式語言,c語言可以提供一種能以簡易的方式編譯,處理低階儲存器,產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。c語言是面向過程的,是底層程式語言。
-
6 # 覆水難收77313204
c語言是面相過程的,c++半面向物件,c#是面向物件。c跟c++是編譯型語言,同時沒有垃圾回收器,可以跟底層直接互動。c#是半編譯半解釋的,有垃圾回收,有虛擬機器,不跟底層直接互動。
回覆列表
一:C語言。C語言誕生得非常早,當時人們普遍還習慣用匯編語言編寫軟體,而且沒有什麼統一,通用的作業系統,基本上軟體都是從0開始寫的。C語言的目標就是比彙編方便易用,同時不要損失彙編的表達能力。所以C語言可以看成是“高階的彙編”語言。C語言的原始碼基本上可以非常容易地對應到彙編程式碼,而且可以不需要什麼執行時環境的支援。C的特點,簡單容易編譯,靈活貼近底層。所以一直到現在,一些需要直接和硬體打交道的軟體都還是用C語言寫的,比如(但不限於)Linux Kernel和一些嵌入式領域。二:C++ 語言。C++早期是基於C的,C++早期的編譯方法是將C++的程式碼編譯成C程式碼然後再呼叫C的編譯器來生成機器碼。C++的目標是提高程式設計人員的生產率,哪怕代價是增加編譯器的複雜度。而提高程式設計人員生產率的方法有如下幾種:提高抽象層次,支援模組化程式設計,模組內緊耦合,模組間鬆耦合,自動化的程式碼生成等等,這些在C++中都有體現(“有體現”不是說只有C++能做這些,理論上C++能做的事情C和彙編都能做,“有體現”是指C++裡面你可以更直接,更自然地做到這些)。面向物件只是C++的一部分,現代的C++的目標是支援多種程式設計範型,同時並不會離硬體太遠。所以C++是非常適合寫一些基礎架構級軟體的,比如編譯器,GUI庫等等。三:C#以及.net框架。時光荏冉,歲月如梭。當進入21世紀的時候,Java的成功已經變成了鐵一樣的事實。背後的思潮就是managed code的崛起,與之對應的就是C/C++這種native code的衰落。當計算機的效能越來越好,但是好的碼農卻越來越少,然而對程式碼的需求卻越來越高的時候,業界的選擇只剩下一個:執行效能換開發效率,降低從新手到一般可接受水平的曲線。C#就是微軟想要複製Java的成功。C#的特點就是:抽象層次高且基本只有一種(面向物件的),執行時支援豐富(垃圾回收等),類庫豐富。所以它就是好學,易用,同時兼顧執行效率,儘量優化。說起這個,並不是說越高階的語言就越慢,執行時效能跟很多東西有關。