C 與C的差異分析

2022-09-28 22:03:22 字數 1160 閱讀 6879

雖說c++是向後相容c的,但c++與c還是存在許多差異。本文列舉了幾個例子加以說明,同時這些也是我們非常容易忽略的地方。本文僅簡單的列舉幾例,更多的不同之處讀者還需要在學習與實踐中不斷的進行發掘和總結。

c編譯通過但c++編譯不通過:

1、c++中編譯器不允許在乙個函式宣告之前呼叫它,但c中編譯器是允許的。

#include // 請用gcc和g++分別進行編譯

int main()

int foo()

2、c++中不能用乙個普通指標指向乙個常量,但c中可以。

#include // 請用gcc和g++分別進行編譯

int main()

3、在c語言中,void指標可以直接賦給其他型別的指標,如int *, char *等。但在c++中,void指標必須要明確地進行型別轉換。(malloc函式返回值為void *型別)

#include // 請用gcc和g++分別進行編譯

int main()

c和c++輸出結果不相同:

4、字元常量在c和c++被當作不同地型別看待:在c中,字元常量如'a','b'被當作int型,而在c++中被當作char型。所以,在c程式設計客棧中sizeof('a')相當於sizeof(int),輸出為4;在c++中sizeof('a')仍相當於sizeof(char),輸出為1。

#include // 請用gcc和g++分別進行編譯

int main()

5、在c中定義結構體必須使用`struct`關鍵字,但在c++中可以省略。在c++中區域性變數會覆蓋同名的全域性變數,但在c中卻不會。

#include // 請用gcc和g++分別進行編譯

int t;

int main()

; printf("%d", sizprsncgleof(t)); // c輸出4,c++輸出8

return 0;

} 6、布林結果在和c中的表示是不同的。因為c語言不直接支援布林型,所以其實返回的是int型,而c++則返回的是bool型別。所以sizeof(1==1)在c中是sizeof(int),在c++中是sizeof(bool)。

#include // 請用gcc和g++分別進行編譯

int main()

本文標題: c++與c的差異分析

本文位址:

C 與C 的差異

1 c 結構是堆疊物件,不能在堆上建立它 2 c 結構可以繼承介面,但是不能繼承自其它結構 3 不能重寫結構的預設建構函式,需要自定義建構函式時必須建立附帶引數的建構函式,以保證和預設建構函式的引數列表有所區別 4 當使用new來建立結構物件時其建構函式自動被呼叫,若僅是像宣告乙個int型別的變數那...

C 與C語言容易忽視的幾個差異

7次 c和c 之間的關係非常的密切,我們也都知道c 是從c擴充而來的,但是這並不表示c 對c完全相容。c 並不是c的超集,c的有些特性在c 中並不適用。看完 c專家程式設計 之後,從中了解到了幾個。簡單總結一下。1 在c 中,使用者 不能呼叫main函式,但在c語言中卻是允許的。所以可以遞迴呼叫ma...

Qt與C檔案操作的差異

在使用qt的qdatastream類進行檔案的二進位制處理時發現與c語言的標準io有差異,下面用 說明。include include include include int main int argc,char argv 程式執行時輸出 num 1 305419896 num 2 30541989...