關於二維指標陣列的理解

2021-07-10 23:26:14 字數 870 閱讀 4357

一:

二維陣列int a[3][3]=,,}=

a可以分解為3個一維指標,a=,a[0]=,

a[1]=,

a=,陣列名代表​著陣列首元素的位址,假設&a[[0][0]=1000,則a=1000,*a代表a的位址1000所指的記憶體a[0],同時a[0]也是乙個陣列,因此a[0]也是位址,a=*a=a[0]=&a[0][0]=&a[0]=1000.

c語言中陣列名加n實際上加的是n個一維陣列儲存區大小​,例如a+1代表a[1],等於1006,(定義的是int型,乙個資料佔兩個位元組,a[1]=&a[1][0]=1006)

a[i]+j表示a[i]的j號元素首位址,等於&a[i][j],

此處不要與a+j混淆!!​

​二:指向二維陣列的指標

型別說明符(*指標變數名)[長度]

型別說明符:所指陣列資料型別

長度:二維陣列分解成多個一維陣列時,一維陣列的長度

int(*p)[3]​,表示p是指向包含4個元素的一維陣列的指標(

陣列指標其實都是指向的一維陣列,處理時也是以一維指標的方式處理,具體看下例

),p+i表示指向a[i],*(p+i)+j表示a[i][j]的位址,*(*(p+i)+j)

​表示a[i][j]的數值。

本例是在程式中經常遇到的,簡單分析下,主要思想是陣列指標是以一維陣列的方式來處理的​

​p指向的是a[0][0]的位址,即p=1000,之後我們將a預設為是一維陣列來處理,p[0]就當做之後一維陣列的首元素,即p[0]=*(1000)=1,p[1]=*(1002)=2.

本人觀點,有錯誤歡迎指正。​

關於二維陣列和二維指標的理解總結

二維陣列和二維指標有很多相似也有很多不同 相同點是他們都可以通過位址去取資料,不同點是 首先二維陣列本身儲存資料,二維指標需要指向別的資料才有用。其次陣列的指標是不可變的,指標是可變的。例 比如上面的二維陣列 a是位址,相當於 int p 3 4 a,單位為 int 3 4 sizeof a 4 而...

C 理解二維陣列的指標

用乙個main函式來描述這個問題吧 今天終於弄明白 p,p 4 p 4 的區別 int main 理解二維陣列的指標 首先,二維陣列的名稱 arr 是乙個指標,它相當於這樣的乙個指標 p 4 它是乙個 指標的指標 從第一層面來講,它是乙個包含4個元素陣列的指標,int p 4 arr p等於這個陣列...

關於指標 二維陣列討論

近來得閒看了阿蓉的關於指標的文章 精華區 覺得內容很生 動,討論得也很細緻。於是忍不住也想聊上幾句,和大家 一下。概括的說,指標其實就是可變陣列的首位址,說是可變陣列,是 指其包含內容的數量的可變的,並且是可動態申請和釋放的,從而充 分節約寶貴的記憶體資源。我一向喜歡一維陣列,除非萬不得已,我一 般...