C 陣列定義和訪問

2021-09-23 19:09:05 字數 2577 閱讀 5195

**:

一、陣列定義和初始化

1: 一維陣列初始化:
2: 標準方式一: int value[100]; // value[i]的值不定,沒有初始化
3: 標準方式二: int value[100] = ; // value[0]和value[1]的值分別為1和2,而沒有定義的value[i>1]
4:

// 則初始化為0

5: 指標方式: int* value = new

int[n]; // 未初始化

6:

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

7:
8: 二維陣列初始化:
9: 標準方式一: int value[9][9]; // value[i][j]的值不定,沒有初始化
10: 標準方式二: int value[9][9] = ,}; //value[0][0,1]和value[1][0]的值初始化,其他初始化為0
11: 指標方式一: int (*value)[n] = new

int[m][n];

12:

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

13: 指標方式二: int** value = new

int* [m];

14:

for(i) value[i] = new

int[n];

15:

for(i) delete value[i];

16:

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

17: 指標方式三: int * value = new

int[3][4]; // 陣列的儲存是按行儲存的

18:

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

19:
20: 多維陣列初始化:
21: 指標方式: int * value = new

int[m][3][4]; // 只有第一維可以是變數,其他幾維必須都是常量,否則會報錯

22:

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

陣列初始化的大括號後面要加「;」來表示結束。

陣列訪問:

指標形式:如二維陣列value[i][j]的訪問:

*(value[i] + j) 或

(*(value + i))[j]

二、陣列作為引數傳遞

1: 一維陣列引數傳遞:
2:

void func(int *value);

3: 或者是
4:

void func(int value);

5:
6: 二維陣列傳遞:
7: 定義是 int **value;的傳遞
8:

void func(int **value);

9: 定義是 int (*value)[n] = new

int[m][n];的傳遞

10:

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

三、陣列與指標關係

1、陣列名的內涵在於其指代實體是一種資料結構,這種資料結構就是陣列;

2、陣列名的外延在於其可以轉換為指向其指代實體的指標,而且是乙個指標常量;

3、指向陣列的指標則是另外一種變數型別,(在win32平台下,長度為4),僅僅意味著陣列存放位址。

4、陣列名作為函式形參時,在函式體內,其失去了本身的內涵,僅僅只是乙個指標,而且在其失去其內涵的同時,它還失去了其常量特性,可以作自增、自減等操作,可以被修改。

四、陣列的儲存格式

多維陣列在記憶體中儲存時是按照最低維連續的格式儲存的,如二維陣列,}在記憶體中的位置是這樣順序的「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,float,double,char.常量表示式 表示陣列元素的...

C 訪問陣列元素

using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace 1212 訪問陣列元素 宣告一維陣列 array 2 33...

C 陣列定義和增加元素

int table 正確 int table 錯誤,c語音的寫法1.1 一維陣列 定義陣列 資料型別 陣列名 初始化陣列中的元素 資料型別 陣列名 new 資料型別 長度 資料型別 陣列名 資料型別 陣列名 new 資料型別 長度 1.2 二維陣列 定義多維陣列 資料型別 陣列名 建立多維陣列並初始...