4 7 6 使用 new 來建立動態陣列

2021-07-03 04:03:21 字數 1985 閱讀 8383

使用常規陣列儲存資料時,一般都是在程式編譯時就已經為陣列分配好了記憶體。如果儲存的資料未達到陣列的長度,就會導致很多記憶體閒置,致使效率較低。

對於處理一些大型資料,我們就可以使用 new 進行動態記憶體分配。常規通過宣告來建立陣列,則在程式被編譯時就已經為它分配好了記憶體空間,不管程式最終是否使用陣列,陣列都在那裡,它占用了記憶體。但使用 new 時,可以在執行階段判斷是否使用陣列以及使用陣列需要的長度。這種在執行時為陣列分配記憶體方式稱為動態聯編。而這種在程式執行時建立的陣列被稱為動態陣列。

一、使用 new 建立動態陣列

只需將陣列的元素型別和元素的數目資訊告訴 new 即可。

語法規則:

pointertype * pointername = new arraytype [asize];

注釋: pointertype 指標型別;pointername 指標名; arraytype 陣列元素型別; asize 陣列元素的數目(既可以是變數也可以是常量)

例如:建立乙個包含10個int元素的動態陣列: int * psome = new int [10];

說明:new 運算子返回的是第乙個元素的位址。在該例子中,這個位址被賦值給 psome。

二、使用 delete 釋放動態陣列記憶體

當程式使用完 new 建立的記憶體後需要使用 delete 對記憶體進行釋放。

語法規則:

delete pointername;

說明: [ ] 方括號不能省略,它表明釋放的是整個陣列。

三、使用 new 和 delete 時,應遵循的規則:

①不要使用delete來釋放不是new分配的記憶體。

②不要使用delete釋放同乙個記憶體兩次甚至多次。

③如果使用new[ ]為陣列分配記憶體,則應該使用delete[ ]來釋放。

④如果new為乙個實體分配記憶體,則應使用delete(沒有方括號)來釋放。

⑤對空指標應用delete是安全的。

四、為陣列分配記憶體的通用格式:

type_name * pointer_name = new type_name [num_elements];

五、使用動態陣列

因為c++內部是使用指標來處理陣列的。因此陣列和指標基本上是等價的。就可以把指標當作陣列名使用。例如,對於第乙個元素就是 psome[0];對於第二個元素就是psome[1],以此類推。

程式清單  4.18  arraynew.cpp

//// main.cpp

// first

//// created by 劉偉 on 15/5/30.

//c++ primer plus

//程式清單4.18 arraynew.cpp

-- using the new operator for arrays

#include

using

namespace

std;

int main()

程式輸出示例:

regard p3 as a array, we can use a value of array:

p3[1] is 0.5

regard p3 as a array, we can use total:

p3[0]+p3[1]+p3[2]=1.5

actually,p3 is a pointer!

increment the pointer.

p3[0] is 0.5

p3[1] is 0.8

point back to beginning.

free the memory!

program ended with exit code: 0

使用new來建立動態陣列

使用new來建立動態陣列 1 如果程式只需要乙個值,則可能會宣告乙個簡單變數,因為對於管理乙個小型資料物件來說,這樣做比使用new和指標更簡單,儘管給人留下的印象不那麼深刻。通常,對於大型資料 如陣列 字串和結構 應使用new,這正是new的用武之地。例如,假設要編寫乙個程式,它是否需要陣列取決於執...

C 學習筆記 使用New來建立動態陣列

1 如何使用c 的new運算子建立陣列 建立乙個包含10個int元素的陣列 int psome new int 10 程式使用完new分配的記憶體塊時,應該用delete釋放 delete psome 使用new和delete時,應遵守以下規則 1 不要使用delete來釋放不是new分配的記憶體 ...

new動態建立陣列?(new建立多維陣列)

在使用陣列時我們難免會感覺陣列的靈活性太低,所以new成了我們使用頻率很高的乙個操作符。int p 2 int p2 2 2 int p3 2 2 2 這是最常規的操作。接下來上new的用法 new的第一種用法 int p newint 5 int p2 4 newint 5 4 int p3 4 ...