10 C 中的新成員

2021-10-02 19:54:10 字數 2446 閱讀 7170

注:部落格中內容主要來自《狄泰軟體學院》,部落格僅當私人筆記使用。

測試環境:ubuntu 10.10

gcc版本:4.4.5

一、動態記憶體分配

1)c++中的動態記憶體分配

- c++中通過new關鍵字進行動態記憶體申請

- c++中的動態記憶體申請是基於型別進行的

- delete關鍵字用於記憶體釋放

釋放陣列記憶體時,delete後邊不加只會釋放陣列首位址記憶體,造成記憶體洩露!!

例項分析

c++中的動態記憶體分配

10-1.cpp

#include int main()

delete p; //釋放陣列

return 0;

}

操作:

1) g++ 10-1.cpp -o 10-1.out編譯正確,列印結果:

p = 0x9fb6008

*p = 15

p[0] = 1

p[1] = 2

p[2] = 3

p[3] = 4

p[4] = 5

p[5] = 6

p[6] = 7

p[7] = 8

p[8] = 9

p[9] = 10

2)new關鍵字與malloc函式的區別

- new關鍵字是c++的一部分

-malloc是由c庫提供的函式

-new以具體型別為單位進行記憶體分配

- malloc以位元組為單位進行記憶體分配

- new在申請單個型別變數時可進行初始化(如何初始化看下邊)

- malloc不具備記憶體初始化的特性

3)new關鍵字的初始化

int* pi = new int(1);		//():初始化變數為1	

float* pf = new float(2.0f); //初始化變數為2.0f

char* pc = new char('c'); //初始化變數為c

程式設計實驗

初始化動態記憶體

10-2.cpp

#include int main()

操作:

1) g++ 10-2.cpp -o 10-2.out編譯正常,列印結果:

*pi = 1

*pf = 2.000000

*pc = c

分析:

申請記憶體時可以初始化記憶體中資料,並且記憶體申請是以變數型別為單位進行分配。

三、c++中的命名空間

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

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

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

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

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

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

- 命名空間可以相互巢狀

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

3)c++命名空間的定義

namespace name	//劃分全域性作用域

/*……*/

}

4)c++命名空間的使用:

- 使用整個命名空間:using namespace name;

- 使用命名空間中的變數:using name::variable;

- 使用預設命名空間中的變數:::variable(省略了空間名)

例項分析

命令空間的使用

10-3.cpp

#include namespace first

namespace second

; }

}int main()

; //宣告乙個p結構體,並初始化

printf("p.x = %d\n", p.x);

printf("p.y = %d\n", p.y);

return 0;

}

操作:

1) g++ 10-3.cpp -o 10-3.out編譯輸出,列印結果:

first::i = 0

second::i = 1

p.x = 2

p.y = 3

小結

1)c++中內建了動態記憶體分配的專用關鍵字

2)c++中的動態記憶體分配可以同時進行初始化

3)c++中的動態記憶體分配是基於型別進行的

4)c++中命名空間概念用於解決名稱衝突問題

C 10 C 中的新成員

變數申請 type pointer new type 堆空間中單個記憶體單元申請 delete pointer 釋放 pointer 所指向的單個記憶體單元陣列申請 type pointer new type n 堆空間中連續 n 個記憶體單元申請 delete pointer 釋放 pointer...

第10課 C 中的新成員

本文內容取自於對狄泰學院 唐佐林老師 c 深度解析 課程的學習總結 例項分析 c 中的動態記憶體分配 include intmain delete p return0 執行結果 new關鍵字與malloc函式的區別 new關鍵字是c 的一部分 malloc是由c庫提供的函式 new 以具體型別為單位...

第10課 C 中的新成員

1.1 c 中的動態記憶體分配 1 c 中通過new關鍵字進行動態記憶體申請 2 c 中的動態記憶體申請是基於型別進行的 3 delete關鍵字用於記憶體釋放 1 type pointer new type 2 3delete pointer 變數申請 1 type pointer new type...