1. 程式人生 > >陣列指標,指標陣列的區別理解

陣列指標,指標陣列的區別理解

在一維陣列中,int*p=arr
在這裡插入圖片描述
上圖為一維陣列,箭頭指向該陣列首元素的地址,陣列表示的型別如下表所示:

一維陣列 型別
arr(指向首元素的指標) int*
arr+1(指向首元素的指標向右移動一個格子) int*
arr[0](0號下標對應的陣列中的值) int
arr[0]+1(給0號下標對應的值加1) int

在二維陣列中,int brr[3][4]
在這裡插入圖片描述

二維陣列 型別
brr int(*p)[4]
brr+1 int(*p)[4]
brr[0] (等同於arr) int*
brr[0]+1 int*
brr[0][0] int

由於brr[3][4]為二維指標,所以,brr是陣列的行指標,即紅色的格子,也是個指標,用(*p)表示,一位陣列指標指向一個元素,而它是指向陣列的指標,並且它所指向的這個陣列與arr[4] 的大小以及型別相等,相當於brr[0] 等同 arr整個陣列,所以brr的型別為int (*p)[4],brr+1則代表的是綠色的格子,所以型別也為int (*p)[4]。
剛解釋 brr[0] 等同 arr,則型別也相等,為int *型,即圖中向上指的箭頭,指向紅格子的首元素的地址,brr[0]+1也為int *型,brr[0][0]代表的如圖中所示為第一行第一個元素,其是int型,如果brr[0][0]=10,則brr[0][0]+1=11,則brr[0][0]+1也為int 型。