C 對C的擴充套件

2021-09-22 21:21:11 字數 1456 閱讀 6677

c++是c語言的加強,是一種更好的c語言

c++是以c語言為基礎的,並且完全相容c語言的特性

c語言 + 物件導向方**===》objective c /c++

c++:以c語言為基礎+物件導向支援+(型別加強、函式加強、異常處理)

標準格式:

namespace name
c中的命名空間

在c語言中只有乙個全域性作用域

c語言中所有的全域性識別符號共享同乙個作用域

識別符號之間可能發生衝突 

c++中提出了命名空間的概念

命名空間將全域性作用域分成不同的部分

不同命名空間中的識別符號可以同名而不會發生衝突

命名空間可以相互巢狀

全域性作用域也叫預設命名空間

std是c++標準命名空間,c++標準程式庫中的所有識別符號都被定義在std中,比如標準庫中的類iostream、vector等都定義在該命名空間中

c語言中的變數都必須在作用域開始的位置定義

c++中更強調語言的「實用性」,所有的變數都可以在需要使用時再定義

在c語言中,重複定義多個同名的全域性變數是合法的

在c++中,不允許定義多個同名的全域性變數

c語言的struct定義了一組變數的集合,c編譯器並不認為這是一種新的型別

c++中的struct是乙個新型別的定義宣告

c++中所有的變數和函式都必須有型別

c語言中的預設型別在c++中是不合法的

c++更加強調型別,任意的程式元素都必須顯示指明型別

c++在c語言的基本型別系統之上增加了bool

c++中的bool可取的值只有true和false

理論上bool只占用乙個位元組

bool型別只有true(非0)和false(0)兩個值

c++編譯器會在賦值時將非0值轉換為true,0值轉換為false

c語言返回變數的值 c++語言是返回變數本身

c語言中的三目運算子返回的是變數值,不能作為左值使用

c++中的三目運算子可直接返回變數本身,因此可以出現在程式的任何地方

注意:三目運算子可能返回的值中如果有乙個是常量值,則不能作為左值使用

c語言中的const變數

c語言中const變數是唯讀變數,有自己的儲存空間

c++中的const常量

可能分配儲存空間,也可能不分配儲存空間 

當const常量為全域性,並且需要在其它檔案中使用,會分配儲存空間

當使用&操作符,取const常量的位址時,會分配儲存空間

當const int &a = 10; const修飾引用時,也會分配儲存空間

c++中的const常量類似於巨集定義

const int c = 5; ≈ #define c 5

c++中的const常量與巨集定義不同

const常量是由編譯器處理的,提供型別檢查和作用域檢查

巨集定義由預處理器處理,單純的文字替換

C 對C的擴充套件

1.c 會對函式返回值型別和引數個數進行檢測 c語言預設為返回值為int,引數個數不做檢查 2.c 在定義結構體變數時,關鍵字struct可以省略,結構體名不能省 3.在全域性中定義 int val g bss段 全是0 在全域性中 int val g 20 data c正確 2是賦值 c 錯誤 重...

c 對c的擴充套件

1 c 對型別檢查比c語言更為嚴格。如 demo1.c char p malloc 100 c語言可以通過,c 報錯 char p char malloc 100 正確 demo2.c const int a 100 int p a c語言警告,c 直接報錯 const int p a 正確 dem...

C 對C的擴充套件 增強

c 對c的擴充套件 1.雙冒號 作用域運算子 中對同乙個變數多次宣告,在 塊中使用時,區域性變數會將全域性變數隱藏。若在 塊使用變數前新增 表示為全域性變數。表示作用域運算子,如常見的std cout,std endl 等,表示cout和endl是std作用域下的識別符號。2.命名空間namespa...