一维数组
int arr[4];
用图片表示为
其中
数据类型 | |
---|---|
arr | int *p(指针) |
arr+1 | int *p(指针,指针的位置往后走一个单元格) |
arr[0] | int(整型,相当于指针解引用) |
arr[0]+1 | int(整型,解引用后的整型数据加一) |
注:arr[0]+1≠arr[0+1]
二维数组
int brr[4][4];
用图片表示为
其中
数据类型 | |
---|---|
brr | int (*p)[4](不是二级指针,而是一个指向第一行一维数组的指针) |
brr+1 | int (*p)[4](指针往后走一行,为走一个单元格) |
brr[0] | int *p(相当于指向一个长度为4的一维数组的指针) |
brr[0]+1 | int *p(同上,不过是指向的一维数组是二维数组的第二行的指针) |
brr[0][0] | int |
二维数组不是二级指针,而是一个数组指针,即指向一个数组的指针
- brr 是指向一维数组brr[0](图中的粉格子)的指针
- brr+1 是指向一维数组brr[1](图中蓝格子) 的指针
- brr[0]是指向一维数组brr[0](图中粉格子)第 1 个格子的指针
- brr[0]+1是指向一维数组brr[0](图中粉格子)第 2 个格子的指针
- brr[0][0]是二维数组第一个格子的值
PS:二维数组第二行的第一个元素的地址接在第一行最后一个元素的后面