#include<stdio.h>
//二维数组地址的区别
int main()
{
int arr[10][10];
//
printf("%p %p %p\n", arr, arr[0], &arr[0][0]);//打印地址相同
// 代表数组的一行 代表一个元素 代表一个元素
printf("%p %p %p\n", arr + 1, arr[0] + 1, &arr[0][0] + 1);
// 代表整个数组 代表数组的一行 代表一个元素
printf("%p %p %p\n", &arr + 1, &arr[0] + 1, &arr[0][0] + 1);
return 0;
}
注意:地址是16进制显示
由上图可知:
- arr,arr[0] 和 &arr[0][0] 地址相同
- arr+1 和 &arr[0]+1 一样,地址往后走一行
- &arr+1 地址往后走一整个数组
- &arr[0][0]+1 和 arr[0]+1 地址往后走一个整形