輕鬆了解C 與C語言的不同之處

2021-10-14 01:45:51 字數 1815 閱讀 5224

​ 貝爾實驗室本賈尼·斯特勞斯特魯普,於2023年在分析linux系統分布核心流量分析時,希望有乙個更加模組化的工具,於是他為c語言增加了類的機制(物件導向),於2023年完成了c++的第乙個版本。

​ 1、c++完全相容c語言的所有內容

​ 2、支援物件導向的程式設計思想(抽象、封裝、繼承、多型)

​ 3、支援函式、運算子過載

​ 4、支援泛型程式設計、模板技術

​ 5、支援異常處理機制

​ 6、型別檢查更嚴格

​ .cpp .cc .c .cxx

​ #include c++中把檔案操作抽象成了類

​ #include 可以繼續使用

​ #include 建議這樣使用,裡面刪除了一些可能引起衝突的巨集

​ using namespace std;

​ cout << 輸出資料

​ cin >> 輸入資料

​ cout/cin不需要對變數取位址,也不需要佔位符,因為它們可以自動識別型別

​ scanf/printf/sscanf/sprintf可以繼續使用。

​ 注意:scanf和printf是c標準庫函式,而cin/cout是c++標準庫的類物件,被定義在std名字空間中

​ g++ file.cpp -> a.out

​ 大多數linux系統都需要額外安裝,ubuntu系統安裝命令:

​ sudo apt-get update

​ sudo apt-get install g++

​ gcc編譯器也可以繼續使用,需要額外加引數:gcc -xc++ flie.cpp -lstdc++

​ c++中有真正的布林型別,不需要新增標頭檔案,bool true false可以直接使用

​ 1、不需要在typedef,在定義結構、聯合變數時可以省略struct union關鍵字。

​ 2、成員可以是函式,成員函式中可以直接訪問成員變數,而不再需要. ->

​ 3、有四個隱藏的成員函式(構造、析構、拷貝構造、複製構造)。

​ 4、可以對成員的訪問許可權進行管理,public/protected/private。

​ 5、結構還可以被繼承

​ 1、不再需要typedef,在定義列舉變數時可以省略enum關鍵字

​ 2、使用方法與c語言基本一致,不能與整形資料混用

​ 1、在c語言中void*可以與任意型別的指標自動轉換(萬能指標)。

void

* p =

null

;int

* p1 = p;

p = p1;

​ 2、c++中void*不能再直接給其它型別的指標變數賦值,只能強制型別轉換後才能賦值,但其它型別的指標可以直接給void*型別賦值。

void* p = null;

int* p1 = p; //error

​ 3、c++為什麼要修改void*

​ 為了安全,另外c++可以自動識別型別,所以對萬能指標的需求不再那麼強烈

​ 4、c++中的字串

​ 1、c++中把字串封裝成了string類,實現在string標頭檔案中,但是已經被iostream包含,定義在std名字空間中。

​ 2、常見的字串操作也不在需要函式,可以使用運算子

​ = strcpy

​ == stcmp

​ += strcat

​ size() strlen

​ 3、計算字串長度使用size成員函式

​ 4、也可以與轉換成c語言中的char*

​ c_str() const char*

​ data() char*

C 與C語言的不同之處

本文介紹了c 與c語言的不同之處。常見區別 庫函式 c stdio.h c iostream 輸入 c scanf c cin 輸出 c printf c cout 動態開闢 c malloc c new 釋放 c free c delete 以上是比較常見之處。下面是我在學習c 中認識到的內容 內...

C語言與C 的不同之處總結

一 c語言認為char屬於int,char型的數值計算實質是ascii碼 二 c語言沒有布林型別,除0位假外,其餘均為真 三 c語言沒有string型別 在c語言中並沒有char型別的常量 但是在c 中卻有,字元常量都是char型別 其實是用int表示char,字元型與整型相比只是更加節省記憶體。有...

C語言和C 中const的不同之處

includeint main 檔案中 include demo.cpp 可不用包含 int main 檔案中 pp檔案中 include demo.cpp 必須包含 int main pp檔案中 const int a 10 不行需要寫 extern const int a 10 include ...