上代码:
1. 表示子数组首地址的三种方法:
arr是父亲地址
arr[0]是子数组的数组名
难点:arr[0] 是子数组的首地址 等价于 *(arr+0) :0行0列
为什么等价呢?
因为当arr是二维数组的时候 *arr取的是列,子数组的地址
所以,arr[0] == *arr == *(arr+0) :0行0列
arr[0]+1 == *(*(arr+0)+1) :0行1列
- #include <stdio.h>
- int main()
- {
- int arr[3][4]={{11,22,33,44},{55,66,77,88},{99,111,222,333}};
- printf("arr是父亲地址:%p,偏移1后是%p\n",arr,arr+1);
- printf("arr[0]是子数组地址:%p,偏移1后是%p\n",arr[0],arr[0]+1);
- printf("arr[0]是子数组地址:%p,偏移1后是%p\n",*(arr+0),*(arr+0)+1);
-
- return 0;
- }