詳解二維陣列

2021-08-18 19:06:31 字數 1673 閱讀 9385

一:定義

int arr[3];

int brr[3][4];

對比一位陣列,二維陣列具有行和列兩個引數,在定義上,與一維陣列相似

資料型別  陣列名[行][列];

二:初始化

同樣,對於一維陣列的初始化,如下所示:

int arr[3] = ;

int arr[3] = ;//其餘預設為0

那麼,二維陣列呢?

二維陣列的初始化採用行優先的原則並且,中括號裡邊只能省略行的值,不能省略列的值。

三:二維陣列的列印

列印二位陣列,兩層for迴圈,遍歷行和列,然後進行列印

直接在主函式中列印:

利用函式呼叫,列印:

在利用函式呼叫列印二維陣列時,一般我們的引數列表為

void show(int crr[4],int row,int col)

在這裡要注意,二維陣列的陣列名不是乙個二級指標,因此,不可以將引數列寫成

void show(int **crr,int row,int col)//error

那麼在呼叫函式中,一維陣列的形參列表可以寫成(int *arr)指標型別,

那麼二位陣列呢,接下來我們對比分析一下兩者的異同:

一維陣列,它的定義為:int arr[4];並且我們可以確定的是:

先來看一維陣列,一維陣列中的陣列名

arr的資料型別為int *

arr+1為int *

arr[0]為int 

在二維陣列中,int brr[3][4];它的陣列名以及以下的資料型別分別為:

brr:         int(*p)[4]

brr+1:     int(*p)[4]

brr[0]:      int *

brr[0]+1:  int *

brr[0][0]:  int

也就是說,我們可以將乙個二維陣列看成是乙個一維陣列,一行為乙個單元格,遵循行優先的原則。

即brr[0][4]和arr[4]相比較,arr == brr[0],同為一維陣列名。

在此,我們區別以下陣列指標和指標陣列的含義:

int (*p)[4];//陣列指標:即指向陣列的指標

int *p[4];//指標陣列:即儲存指標的陣列

因此,利用呼叫函式時,我們可以將形參列表寫成如下:

對了,在說乙個關於二維陣列越界的問題,由於我們可以將乙個二維陣列看成乙個一維陣列,當二維陣列月結某一行時,自動跳轉到下一行的起始位置。如下例所示,越界的位置和下一行的起始位置值一致。

最後附上判斷複雜資料型別的方法:

(一):看符號的優先順序

(二):陣列       關注陣列的格仔數和資料型別

*指標      關注指標的指向內容

()函式     關注函式的引數列表和返回值

二維陣列詳解

問題 cannot convert from double 10 10 to double 例如 double arry 5 10 double pp pp arry 直接的賦值會提示錯誤 cannot convert from double 10 10 to double 解決方法 double ...

Objective C 二維陣列詳解

在實際的專案開發中,二維陣列也是常常用到的資料結構。oc中的二維陣列也是通過一維陣列來建立的,今天我們來詳解一下如何在oc中使用二維陣列。使用nsarray初始化二維陣列 使用nsarray初始化的一維陣列和二維陣列都是不可變陣列。import int main int argc,const cha...

二維陣列的詳解

二維陣列在概念上是二維的,有行和列,但在記憶體中所有的陣列元素都是連續排列的,它們之間沒有 縫隙 要用陣列指標來操作二維陣列。int p 4 a p每移動一次就是移動了乙個一維陣列。指標陣列 int p a 4 int p 4 以下面的二維陣列 a 為例 int a 3 4 從概念上理解,a 的分布...