在一维数组中,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 型。