C 動態陣列初始化 new delete

2021-08-20 13:20:12 字數 1989 閱讀 1428

定義:

int *pia = new int[10]; // array of 10 uninitialized

ints

此 new 表示式分配了乙個含有 10 個 int 型元素的陣列,並返回指向該陣列第乙個元素的指標,此返回值初始化了指標 pia。

在自由儲存區中建立的陣列物件是沒有名字的,只能通過其位址間接地訪問堆中的物件。

注意:c++使用new和delete在堆(自由儲存區)上分配和釋放動態陣列。

動態陣列初始化:

1.元素只能初始化為元素型別的預設值,而不能像陣列變數一樣,用初始化列表為陣列元素提供各不相同的初值。

2.對於內建資料型別元素的陣列,必須使用()來顯示指定程式執行初始化操作,否則程式不執行初始化操作:

int *pia = new int[10]; // 每個元素都沒有初始化

int *pia2 = new int[10] ();  // 每個元素初始化為0

3.類型別元素的陣列,則無論是否使用(),都會自動呼叫其預設建構函式來初始化:

string *psa = new string[10]; // 每個元素呼叫預設建構函式初始化

string *psa = new string[10]();

// 每個元素呼叫預設建構函式初始化

動態分配空陣列:

char *cp = new char[0];

之後,可以動態改變cp的維數。

動態釋放:

delete pia;

典型使用示例:

const char *pc = "a very long literal string";

// 處理c風格字串時使用const指標

const size_t len = strlen(pc) +1;      // size_t用於陣列的大小和下標

for (size_t ix = 0; ix != 1000000; ++ix)

參考:blog.csdn.net/winjack11/article/category/559603

一維陣列初始化:

標準方式一: int value[100]; // value[i]的值不定,沒有初始化

標準方式二: int value[100] = ; // value[0]和value[1]的值分別為1和2,而沒有定義的value[i>1]

int value[100]()      // 則初始化為0

指標方式: int* value = new int[n]; // 未初始化

int* value = new int[n](); // 則初始化為0

delete value;  // 一定不能忘了刪除陣列空間

二維陣列初始化:

標準方式一: int value[9][9]; // value[i][j]的值不定,沒有初始化

標準方式二: int value[9][9] = ,}; //value[0][0,1]和value[1][0]的值初始化,其他初始化為0

指標方式一: int (*value)[n] = new int[m][n];

delete value; // n必須為常量,呼叫直觀。未初始化

指標方式二: int** value = new int* [m];

for(i) value[i] = new int[n];

for(i) delete value[i];

delete value; // 多次析構,儲存麻煩,未初始化

指標方式三: int * value = new int[3][4]; // 陣列的儲存是按行儲存的

delete value; // 一定要進行記憶體釋放,否則會造成記憶體洩露

多維陣列初始化:

指標方式: int * value = new int[m][3][4]; // 只有第一維可以是變數,其他幾維必須都是常量,否則會報錯

delete value; // 一定要進行記憶體釋放,否則會造成記憶體洩露

陣列 初始化 只含動態初始化 靜態初始化

首先j a中此處只講靜態初始化 動態初始化 靜態初始化就是提前在陣列中設定好了陣列內容,此內容不做改動,該多長已經在設定內容的時候已經決定 動態初始化就是僅限於new及確定陣列大小長度,裡面的陣列內容沒有,可自由進行填寫,也包含了靜態初始化的內容 示例 package 陣列 public class...

C 中靜態初始化陣列與動態初始化陣列詳解

靜態初始化的陣列的長度必須是在程式中確定的常數,不能是由使用者輸入的變數 例子 int a 10 正確 student stud 10 正確 student是乙個學生類 int n cin tkgcbt hgt n int a n 錯誤 int n cin n student stud n 錯誤 s...

C 陣列初始化

定義 int pia new int 10 array of 10 uninitialized ints 此 new 表示式分配了乙個含有 10 個 int 型元素的陣列,並返回指向該陣列第乙個元素的指標,此返回值初始化了指標 pia。在自由儲存區中建立的陣列物件是沒有名字的,只能通過其位址間接地訪...