C 學習筆記(一)

2021-07-28 06:00:43 字數 3100 閱讀 5830

1.c++命名空間

所謂namespace

,是指識別符號的各種可見範圍。c++

標準程式庫中的所有識別符號都被定義於乙個名為

std的

namespace中。

當使用時,相當於在

c中呼叫庫函式,使用的是全域性命名空間,也就是早期的

c++實現;

當使用的時候,該標頭檔案沒有定義全域性命名空間,必須使用

namespace std

;這樣才能正確使用

cout

。(或者使用std::cout)

2.實用性增強

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

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

例如:

for(int i = 0;i<10;i++)

3.register關鍵字增強

register關鍵字請求「編譯器」將區域性變數儲存於暫存器中

c語言中無法取得

register

變數位址

在c++

中依然支援

register

關鍵字

c++編譯器有自己的優化方式,不使用

register

也可能做優化

c++中可以取得

register

變數的位址,

c++編譯器發現程式中需要取

register

變數的位址時,

register

對變數的宣告變得無效。

int main()

4.變數檢測增強 在c

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

在c++

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

int g_var;

int g_var = 1;

int main(int argc, char *argv)

以上**在c語言中能編譯通過,而在c++中不能

5.struct型別的加強c語言的struct定義了一組變數的集合,c編譯器並不認為這是一種新的型別c++中的struct是乙個新型別的定義宣告

struct student

;int main(int argc, char *argv)

;student s2 = ;

return 0;

}

6.c++中的所有變數和函式都必須要有型別c語言中的預設型別在c++中是不合法的,下面這個**在c++編譯器中不能編譯通過

f(i)

g()int main(int argc, char *argv)

在c語言中

int f( );表示返回值為int,接受任意引數的函式

int f(void);表示返回值為int的無參函式

在c++中

int f( );和int f(void)具有相同的意義,都表示返回值為int的無參函式

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

7.新增bool關鍵字

c++中的布林型別

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

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

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

如果多個bool變數定義在一起,可能會各佔乙個bit,這取決於編譯器的實現

true代表真值,編譯器內部用1來表示

false代表非真值,編譯器內部用0來表示

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

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

8.三目運算子功能增強

int main()

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

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

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

注意:三目運算子可能返回的值中如果有乙個是常量值,則不能作為左值使用(例如: ( a < b ? 1 : b)= 30 ).

那麼怎樣讓c中的三目運演算法當左值呢?

*(a < b ? &a : &b) = 30;

9.c/c++中的const

int main()

以上**在c和c++執行的結果是不一樣的

c語言中

const

變數是唯讀變數,有自己的儲存空間

c++中的

const

修飾的,是乙個真正的常量,而不是

c中變數(唯讀)。在

const

修飾的常量編譯期間,就已經確定下來了。

c++中的

const

常量可能分配儲存空間,

也可能不分配儲存空間  

當const

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

當使用&

操作符,取

const

常量的位址時,會分配儲存空間

當const int &a = 10; const

修飾引用時,也會分配儲存空間

const和#define的區別

對比加深

c++中的

const

常量類似於巨集定義

const int c = 5; ≈ 

#define c 5

c++中的

const

常量與巨集定義不同

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

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

c 學習筆記一

2007 9 4 引用,該型別的變數不直接儲存所包含的值,而是指向它所要儲存的值。c 的引用型別有四種 類 代表 陣列 介面。一下 表示類b從類 a中繼承 class a class b a 類的成員有以下型別 成員常量,代表與類相關聯的常量值。域,即類中的變數。成員方法,複雜執行類中的計算和其它操...

C 學習筆記 一

c 學習筆記 一 by heiyeluren 學習 visual c 入門經典 的個人筆記。1.函式的過載 函式過載提供了建立多個同名函式的能力。我們確定乙個函式是獨一無二的方法是通過三項方法,分別是是通過返回值的型別,函式名,函式 引數等三項內容。我們函式過載主要就是使用不同的引數來確定使用那個函...

C 學習筆記一

c中的記憶體分配方式 1.靜態儲存區域 在程式開始之前就可以分配,且在程式執行過程中始終存在 2.棧 儲存單元在其上分配,單元外自動釋放,多見內建 資料型別於此 3.堆 動態分配,即程式執行時分配此部分記憶體.由使用者分配且要負責釋放.生存期由使用者決定,不受範圍限制 stdlib.h提供mallo...