1.二维数组我们用父子的地址来称呼二维数组的地址
比如arr[3][4]
这里的arr是二维数组的首地址,也是父数组的首地址,也是子数组的首地址
arr+1父数组的地址偏移1,实际上是偏移了4*4=16个字节
arr[0]是子数组的首地址,arr[0]+1是子数组偏移一位,实际上偏移了4个字节。
2.子数组的首地址可以有两种取地址的方法:
arr[0]为子数组首地址,arr[0]+1,偏移一位
等价于下面:
*(arr+0)为子数组的首地址,*(arr+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;
}