《完美C C 》之C與C 的區別(一)

2021-07-28 16:36:50 字數 1107 閱讀 5937

型別檢查的區別

列舉的區別

左值也可被賦值

1、型別檢查更嚴格

//c++型別檢查比c語言更加嚴格

int main()

同樣的**在c語法中就能編譯通過,但是在c++中就會報錯。

1.1const int a在c++中就必須要初始化,不然就報錯,但是在c語言中就能編譯通過,而且是個隨機值。

1.2上列中的 int p = &a在c++中編譯不會通過,原因是變數a是const int型別,那麼取位址就為const int 型別,把乙個const int 型別賦值給int 在c++語法中是通不過的,但是c語言就可以通過,而且可以用該指標間接的修改const int a的值,這是c語言的一種缺陷。

1.3我們都知道mallo(100)返回的是void ,在c++語法中建議倆個型別相同才賦值,所以char *p == void 在c++語法中應先把void 強轉為char ,注:基礎型別可以相互轉化如int ,double, float。

2、列舉的區別

eume bool

;int main()

2.1在c++中列舉只可以賦值你列舉的那些值,不可以賦值其他的,否則報錯,但是c語言的列舉可以.

2.2在c++的語法中不必須使用 enum、struct等字首,但是在c語言中就必須要使用字首來宣告,如:enum bool a。

enum     

;//上面的列舉等價於 #define off 0

// #define on 1

enum

week

int main

3.1定義列舉變數不能賦予列舉值以外的值。如:week week = 100; 但是在c語言中不會報錯。

3.2用列舉來代替巨集,所以c++中建議用列舉或者用const來代替巨集.

3、c++表示式也可以做左值

int main()

4.1在c++中表示式可以做左值,主要是運算子過載機制,具體的我們在運算子過載去分析

C 學習筆記之C C 的區別

c 學習的基本概要 1 c和c 的去別 1 帶預設值的引數的函式 2 inline內聯函式 3 函式過載 4 引用 5 const 指標 引用 6 new delete 7 命名空間 2 c 物件導向 3 c 模板程式設計 4 c 運算子過載 5 c 繼承和多型 6 c 的i o流的異常處理 7 c...

c與c 的區別(一)

最近在學習c 很多人都說c 是c的擴充,但是我認為這兩種語言雖說前面的語法是差不多的,但是後期的程式設計包括思想都是不同的。我覺得以這本書為我的學習書目,總結一些c和c 不同的地方,當然也有一些是以前我沒有注意到的地方,不代表c中沒有這種特性。1.main 函式的返回型別必須為int,即整數型別。i...

C與C 的區別(一)

c語言 c89 不支援帶有預設值的函式 c c 99 支援帶有預設值的函式 要從右到左,給形參,預設值。那麼什麼是帶預設值的函式呢?int sum int a 10,int b 20 intmain 這就是傳說中的帶預設值的函式,它的實參不是通過函式呼叫傳遞的而是通過在定義或聲 明函式時在函式體內給...