C與C 的區別(學習記錄)

2021-10-23 16:20:10 字數 1374 閱讀 3379

c與c++的區別

(1)函式預設值

c語言不支援函式預設值;c++支援函式預設值,並遵循從右往左賦初值.

(2)inline內聯函式

c語言沒有內聯函式;c++支援,在呼叫點直接展開,不生成符號,沒有棧的開闢回退,僅在release階段下生效。一般寫在標頭檔案中,在編譯階段進行處理,會進行型別檢查,稱為更安全的巨集。

(3)函式過載

c語言不存在函式過載,c++根據函式名、引數個數、引數型別判斷過載,屬於靜態多型,必須在同一作用域下才叫過載。

(4)const

c中的const叫唯讀變數,可以不初始化,被修飾後不能再賦值,不可以當陣列下標,可以通過指標去修改。除了不能再賦值其他與普通變數一樣。

c++中的const是真正的常量,定義的時候必須初始化,可以當作陣列的下標,可以通過指標修改。

(5)引用&

c++中的引用其實就是取位址,底層就是指標,使用時會直接解引用,可以配合const對乙個立即數進行引用

(6)malloc,free與new,delete

《1》malloc,free是函式,new,delete是運算子

《2》malloc在分配前需要輸入大小,new則直接輸入型別即可

《3》malloc使用後返回值是void*,需要手動型別轉換;new不需要型別轉換

《4》malloc直接申請空間,free只釋放空間;new先呼叫建構函式再申請空間,delete先呼叫析構函式再釋放空間。

《5》開闢空間失敗的處理方式不同,malloc失敗返回0,new失敗丟擲bad_alloc異常,使用異常機制。

《6》new底層是呼叫malloc,delete底層是呼叫free。

《7》malloc在堆中開闢空間,new可以在多個自由儲存空間開闢空間。

(7)作用域

c語言中只有兩個作用域:區域性變數和全域性變數。

c++中有區域性作用域、類作用域、名字空間。

(8)設計思想上

c++是物件導向的語言,也可以面向過程化程式設計。

c語言是面向過程結構化程式設計語言。

學習記錄 C與C STL

注 僅 vector 和 string 支援對迭代器進行加減某個數字 it自增自減除外 迭代器.begin 指向首元素,而.end 指向尾元素的下乙個。quad 常用的容器即 變長陣列 字元陣列 字串 廣義陣列鍵值對 對映 集合 各種資料結構。優先使用迭代器來定位或遍歷,其通用操作多 quad 若想...

C 與C的區別

l c如果不寫返回值,預設是int,而c 中不能不寫返回值 可用void表示無返回值 如func1 l int func1 在c中表示可帶任意引數的函式,這是c的漏洞,使得它避開了引數型別檢查 而c 中表示不帶引數的函式。2 標頭檔案的區別 l c 的標頭檔案去掉了c中的.h,以c字首開始。比如,變...

C與C 的區別

1.void型指標 int x malloc sizeof int 10 在c裡面是合法的,但是在c 中編譯不通過。從bjarne stroustrup給出的解釋是這種型別是不安全的。就是說你可以使用乙個void型的指標指向任何位址,如果你分配了乙個位址給這個void指標指向另乙個與它型別不同的指標...