C,C 和C 它們有什麼區別

2021-09-27 05:53:37 字數 1279 閱讀 2207

只有c語言和c++語言,沒有c+語言。

1、出現時間不同

c++是c的超集,也可以說c是c++的子集,因為c先出現。按常理說,c++編譯器能夠編譯任何c程式,但是c和c++還是有一些小差別。

例如c++增加了c不具有的關鍵字。這些關鍵字能作為函式和變數的識別符號在c程式中使用,儘管c++包含了所有的c,但顯然沒有任何c++編譯器能編譯這樣的c程式。

2、c程式可以省略函式原型,而c++不可以

乙個不帶引數的c函式原型必須把void寫出來。而c++可以使用空引數列表。c++中new和delete是對記憶體分配的運算子,取代了c中的malloc和free。標準c++中的字串類取代了c標準c函式庫標頭檔案中的字元陣列處理函式(c中沒有字串型別)。

c++中用來做控制態輸入輸出的iostream類庫替代了標準c中的stdio函式庫。c++中的try/catch/throw異常處理機制取代了標準c中的setjmp()和longjmp()函式。

3、關鍵字和變數不同

在c++中還增加了bool型變數和wchar_t型變數:布林型變數是有兩種邏輯狀態的變數,它包含兩個值:真和假。如果在表示式中使用了布林型變數。

那麼將根據變數值的真假而賦予整型值1或0。要把乙個整型變數轉換成布林型變數,如果整型值為0,則其布林型值為假;反之如果整型值為非0,則其布林型值為真。布兒型變數在執行時通常用做標誌,比如進行邏輯測試以改變程式流程。

c++中還包括wchar_tt資料型別,wchar_t也是字元型別,但是是那些寬度超過8位的資料型別。許多外文字符集所含的數目超過256個,char字元型別無法完全囊括。wchar_t資料型別一般為16位。

標準c++的iostream類庫中包括了可以支援寬字元的類和物件。用wout替代cout即可。

4、強制型別轉換不同

有時候,根據表示式的需要,某個資料需要被當成另外的資料型別來處理,這時,就需要強制編譯器把變數或常數由宣告時的型別轉換成需要的型別。為此,就要使用強制型別轉換說明,格式如下:intiptr=(int) &table;

表示式的字首(int*)就是傳統c風格的強制型別轉換說明(typecast),又可稱為強制轉換說明(cast)。強制轉換說明告訴編譯器把表示式轉換成指定的型別。

有些情況下強制轉換是禁用的,例如不能把乙個結構型別轉換成其他任何型別。數字型別和數字型別、指標和指標之間可以相互轉換。當然,數字型別和指標型別也可以相互轉換,但通常認為這樣做是不安全而且也是沒必要的。強制型別轉換可以避免編譯器的警告。

5、函式過載

在c++中,允許有相同的函式名,不過它們的引數型別不能完全相同,這樣這些函式就可以相互區別開來。而這在c語言中是不允許的。

C 和C 有什麼區別

內容會持續更新,有錯誤的地方歡迎指正,謝謝 突然想到,自己在用的c 和c 有什麼區別?有點懵,對不對,但靜下來想想,從非語言層面來看,c 的確有很多不同點 c 是物件導向的c語言,還多了stl這個標準模板庫 c 針對系統底層,非常適用於開發作業系統層面的應用 c 缺乏現成的框架模板可以使用,開發難易...

Visual C 和 C 有什麼區別?

有位同學問我 visual c 和c 有什麼區別?這的確是初學者會感到困惑的問題,比較常見。除此之外,還有 先學c 好,還是先學visual c 好?都屬於同樣的概念不明的問題,就比如問 英語和英語詞典有什麼區別 一樣。要弄清這個問題的答案,就要明白語言,工具,庫,標準的概念。可以參考我之前發的 p...

併發程式設計之什麼是堆疊 它們有什麼區別

什麼是堆疊?有什麼區別?堆疊都是一種資料項按序排列的資料結構,只能在一端對資料項進行插入和刪除。在微控制器應用中,堆疊是個特殊的儲存區,主要功能是暫時存放資料和位址,通常用來保護斷點和現場。要點 堆,佇列優先,先進先出 fifo first in first out 1 棧,先進後出 filo fi...