C 陣列初始化

2021-09-05 12:08:01 字數 3626 閱讀 6944

定義:

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)

一維陣列初始化:

標準方式一

int value[100]; // value[i]

的值不定,沒有初始化

標準方式二

int value[100] = ; // value[0]

和value[1]

的值分別為1和

2,而沒有定義的

value[i>1]

則初始化為0

指標方式

int* value = new int[n]; //

未初始化

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; //

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

陣列初始化的大括號後面要加「

;」來表示結束。

陣列訪問:

指標形式:如二維陣列

value[i][j]

的訪問:

*(value[i] + j)

或(*(value + i))[j]

一維陣列引數傳遞:

void func(int *value);

或者是void func(int value);

二維陣列傳遞:

定義是int **value;

的傳遞

void func(int **value);

定義是int (*value)[n] = new int[m][n];

的傳遞

void func(int (*value)[n]); // sizeof(p)=4,sizeof(*value)=sizeof(int)*n;

多維陣列在記憶體中儲存時是按照最低維連續的格式儲存的,如二維陣列,}

在記憶體中的位置是這樣順序的「

1,3,2,4

」,這跟

matlab

是有區別的,

matlab

是按列進行儲存的。在使用指標進行索引時很有用。

char

型別的陣列被稱作字元陣列,通常用來儲存字串。字串是附加有特殊字元(串尾標誌)的字串行。串終止字元表明字串已經結束,該字元由轉義序列

『\0』

定義,有時被稱為空字元,占用乙個位元組,其中

8位全為

0。這種形式的字串通常被稱為

c型字串,因為以這樣的方式定義字串是在

c語言中推出的,在

c++一般使用

string

,而mfc

中則定義了

cstring類。

字串中每個字元占用乙個位元組,算上最後的空字元,字串需要的位元組數要比包含的位元組數多乙個。如:

char movie_star[15] = 「marilyn monroe」;

這裡字串是

14個字元,但是要定義

15個字串的陣列。也可以不指定字元陣列的個數。如:

char movie_star = 「marilyn monroe」;

我們定義了乙個指標,然後給它賦予了乙個位址值,然後又不再使用,但是沒有

delete

,那麼當給指標賦予其他的位址值時,原來的記憶體將無法釋放,這就叫做記憶體洩露。

C 陣列初始化

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

C 陣列初始化

c 的陣列初始化是在宣告陣列時將初始值放在大括號 之內。如果沒有指定初始值,則陣列成員將自動初始化為該陣列型別的預設初始值。請閱讀陣列的屬性。如果將陣列宣告為某型別的字段,則當例項化該型別時它將被設定為預設值null。一 一維陣列的初始化 1.在宣告陣列時將其初始化。如 int array new ...

C 陣列 陣列的初始化

陣列和變數一樣,在使用時必須對其進行初始化,即給變數或陣列賦值。陣列可以在定義時初始化,也可以在使用時初始化。下面的 演示了如何初始化陣列。int arrayint 也可以用下面方式初始化陣列 int arrayint arrayint new int 初始化陣列還可將前面的方式組合起來,用這種方式...