當前位置:才華齋>計算機>C語言>

C,C++,C#三者的闡述和區別

C語言 閱讀(3.24W)

  一、關於C語言

C,C++,C#三者的闡述和區別

C語言是一種結構化程式語言。它層次清晰,便於按模組化方式組織程式,易於除錯和維護。C語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

C語言的表現能力和處理能力極強。它不僅具有豐富的運算子和資料型別,便於實現各類複雜的資料結 構。它還可以直接訪問記憶體的實體地址,進行位(bit)一級的操作。

由於C語言實現了對硬體的程式設計操作,因此C語言集高階語言和低階語言的功能於一體。既 可用於系統軟體的開發,也適合於應用軟體的開發。此外,C語言還具有效率高,可移植性強等特點。

因此廣泛地移植到了各類各型計算機上,從而形成了多種版本 的C語言。

  二、C++

C++ 是在C的基礎上改進後的一種程式語言,主要是增添了許多新的功能,難度也比C大,和C一樣側重於計算機底層操作,也就是系統軟體的開發。C++這個名字是Rick Mascitti於1983年中所建議的,並於1983年12月首次使用。更早以前,尚在研究階段的發展中語言曾被稱為“new C”,之後是“C with Class”。在電腦科學中,C++仍被稱為C語言的上層結構。它最後得名於C語言中的“++”操作符(其對變數的值進行遞增)。而且在共同的命名約定中,使用“+”以表示增強的程式。Stroustrup說:“這個名字象徵著源自於C語言變化的自然演進”。

注:C+是一個和C/C++無關的早期程式語言。

  三、C#

C#是在C++的基礎上再一次改進後的程式語言,相比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++ 中結構中,它可以有自己的成員變數和成員函式。但是在 C 語言中結構的成員是公共的,什麼想訪問它的都可以訪問;而在 VC++ 中它沒有加限定符的為私有的。

5,C 語言可以寫很多方面的程式,但是 C++ 可以寫得更多更好,C++ 可以寫基於DOSr程式,寫 DLL,寫控制元件,寫系統。

6,C 語言對程式的檔案的組織是鬆散的,幾乎是全要程式處理;而 C++ 對檔案的組織是以工程,各檔案分類明確。

7,C++ 中的 IDE 很智慧,和 VB 一樣,有的功能可能比VB還強。

8,C++ 對可以自動生成你想要的程式結構使你可以省了很多時間。有很多可用的工具如加入 MFC 中的類的時候,加入變數的時候等等。

9,C++ 中的附加工具也有很多,可以進行系統的分析,可以檢視 API;可以檢視控制元件。

10,除錯功能強大,並且方法多樣。

  五、C#與C++的區別

1,最重要的特性就是 C# 是一種完全面向物件的語言,而 C++ 不是,另外 C# 是基於 IL 中間語言和 Framework CLR 的,在可移植性,可維護性 和強壯性都比 C++ 有很大的改進

2,C# 的設計目標是用來開發快速穩定可擴充套件的應用程式,當然也可以通過 Interop 和 Pinvoke 完成一些底層操作,但是對於一些和底層系統相關很緊密的程式(譬如說驅動程式),還是建議用 C++ 來寫

3,C++ 不允許在一個建構函式中呼叫另外一個建構函式(稱為委派建構函式呼叫),而 C# 則允許。委派建構函式呼叫語法上非常自然和易懂,事實上, C++ 不提供這一特性並不是出於語法上的考慮,而是出於資源管理的考慮(這樣的事情對 C++ 來說還有很多很多)。

4,C++ 的建構函式用於分配資源,而解構函式用於釋放資源,建構函式和解構函式呼叫必須匹配,否則就打破了 C++ 的基本規則。如果允許委派建構函式呼叫,則顯然會打破這一規則——建構函式被執行兩次,而解構函式只執行一次。當然,對一些類,例如前面的那個 Point 來說這不是個問題,但是從語言機制的角度講這個特性可能屬於“危險”的特性。注:在最新的 C++ 標準提議草案中,Herb 等人有一個關於允許委派建構函式呼叫的提案,當然這很大程度上是為了方便 C++ /CLI 繫結。

5,在 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++的許多東西,但和兩者基本上 已完全不一樣了.你可以把它當作一種全新的語言來學。