c和c++語言的區別:
這是我複習c和c++語言時做的幾點總結,不妥之處,敬請大神指正。
1、c是面向結構化的設計語言,c++在c基礎上增加了物件導向的支援和物件導向的程式設計方法,支援封裝、繼承、多型。c++可定義類,c中沒有類的概念。
2、c的結構僅可包含資料成員,c++擴充套件了結構,可以包含函式成員,也可以指定成員的訪問控制符(private,public,protected),總之c++中結構和類非常類似,差別僅在於結構成員預設是public的,而類成員預設是private的。
3、c語言不支援函式預設引數,而c++支援。預設引數是指,在定義函式時給形參指定乙個預設的值,如果呼叫函式時沒有傳遞對應的實參,那麼函式中就使用這個預設的值。例如:int add(int a,int b=0,int c=0),呼叫時可以省略後面的引數,如add(1,2)或add(1)。注意與可變引數的區別,可變引數是指引數個數不固定,參見下面擴充套件閱讀鏈結。
4、c中區域性變數宣告必須在函式體內最前面或語句塊(如while塊、for塊)內最前面,而c++變數可在任何需要的地方才定義。如for(int i=0; i<10; i++)這行中的i在c中錯誤,而c++中是正確的(i僅在for迴圈中有效)。c從c99開始也可以把變數放在任何位置。
5、c語言動態記憶體分配使用malloc函式和free函式,c++除了支援malloc和free外,增加了new操作符和delete操作符,支援普通變數和物件的動態分配,功能更加強大。
6、c中沒有布林型資料型別,而c++中有bool資料型別(取值true,false),c語言從c99標準開始才有了bool型別。
7、輸入輸出方面(包括標準裝置、檔案的輸入輸出),c++在保留c的i/o功能基礎上,增加了物件導向的i/o功能,即可以通過流物件實現輸入輸出,例如我們常見的cout、cin,並且提供了格式化輸入輸出的流操縱運算元。
8、在函式引數傳遞方面,c語言只能按值傳遞,c++語言還支援按引用傳遞。
9、c++支援內聯函式,早期c語言不支援內聯函式,而從c99標準後inline才被擴充套件到c語言,所以在支援c99標準的編譯器中才可以使用inline。
10、c不支援函式過載,而c++支援函式過載。注意這裡不是指類中函式過載,而是指普通函式的過載。
11、c++中定義結構、聯合、列舉變數時可分別省略關鍵字struct、union、enum,如:[struct] student stud; [union] number num;[enum] weekday workday; 括號內是c++可省略的關鍵字,而在c中不可省略。
12、c++中使用try、throw和catch處理異常,c中沒有這樣的異常處理機制。c中異常處理方法參見下面擴充套件閱讀鏈結。
13、c++中有模板(函式模板、類模板),c中沒有模板,但可以用巨集來模擬實現模板功能。
14、c中注釋使用/* */,c++中增加了一種//行注釋。c從c99開始也增加了//行注釋。
擴充套件閱讀:
1. c語言函式的可變引數列表
2. c++可變引數的兩種方法
3. c/c++中帶可變引數的函式
4. c語言中的異常處理
C 和c語言的區別
在大家眼中c 與c語言很像,但兩個有本質的區別,c語言是面向過程的,而c 是物件導向的,下面就給大家梳理梳理。1 c語言有標準的函式庫,它們鬆散的,只是把功能相同的函式放在乙個標頭檔案中 而c 對於大多數的函式都是有整合的很緊密,特別是c語言中沒有的c 中的api是對window系統的大多數api有...
程式語言 C和C 的區別
c 在增加物件導向的特徵之外,還對c語言進行了擴充和增強。主要的增強點有如下幾個 1 注釋 在c語言塊注釋的形式 explanation sentence 的基礎上,c 語言提供了一種新的單行注釋形式 explanation sentence 即用 表示注釋開始,從該位置直到當前行結束的所有字元都被...
C語言裡 和 的區別
今天寫 時,遇到乙個很明顯,但是困住我這個小白的錯誤 錯誤 在非結構或聯合中請求成員 data switch core file write rh fh,mask null data rnnoise clone.data,len 很明顯是rnnoise clone.data用錯了。為什麼呢?並不是乙...