二維陣列的初始化與記憶體存放關係。

2021-08-11 04:55:49 字數 1019 閱讀 6991

一.初始化

1.可以沒有行數,但一定要有列數;

int arr[ ][10]=,};√

int arr[ ][    ]=,};×

2.分配的空間不能為0

int arr[ 0 ][  0 ]=};×

3.可以對部分元素賦值,根據下標而設定的空間,其餘沒有賦值的則預設為0;

4.可以為整型、字元型、指標型。

int arr[ ][    ]=,};

char arr[ ][    ]=,};

未定義的預設為空字元'\0';

二.存放關係

我們理解的二維陣列是矩陣的關係,但它實際上在記憶體中是連續存放的。

int arr[ 3 ][  4 ]=,,;

arr是這個二維陣列的陣列名,3,4是這個陣列的下標,代表3行4列。

arr包含3行,即a[0],a[1],a[2];而每一行元素又是乙個一維陣列。

以第一行arr[0]為例:此時我們可以把arr[0]看做陣列名,其中包含4個元素,arr[0]是乙個包含4個元素的一維陣列。

因此,我們可以把二維陣列理解為是「陣列的陣列」。

從二維角度上來看,arr代表首元素的位址。現在理解的首元素不是乙個簡單的整型元素,而是二維降級後,一維陣列的元素,也就是第一行arr[0]的元素。

所以arr代表的是arr[0]的首位址,arr+1代表的是arr[1]的首位址。

arr到arr+1剛好跳過了12個位元組,也就說明剛好跳過a[0]=這一行(3個元素,12個位元組)。

二維陣列記憶體的初始化

二維字串陣列的初始化 動態記憶體分配 昨天在用fbs200 指紋採集晶元採集到乙個二維陣列資料後,利用串列埠傳輸上來的資料是以十六進製制的資料格式表示的二維矩陣,比如 ff bd 5c 等等這樣的形式,而對於一幅灰度影象,一般都是在0 255 之間的資料來表示其亮度值,因此想通過二維字串陣列來對採集...

二維陣列的初始化

1.使用兩個for迴圈定義 for i 1 i n i 2.定義時初始化 int a n m 3.使用函式定義 memset 作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法 memset函式對陣列只能用於置零 0 或置負一 1 操作 include voi...

二維陣列的初始化

1.不分行的初始化,所有陣列元素放在一對 內 1 全部元素初始化 a 2 3 2 部分元素初始化 a 2 3 未初始化的元素預設為0,即a 1 1 0,a 1 2 0。3 省略一維長度下標時的初始化 行下標 a 3 陣列元素個數除以列數,正好除盡,所得的商就是行數。a 3 陣列元素個數除以列數,除不...