注意arr和&arr的区别
arr是&arr[0], &arr是int (*)[5],指向整个数组的指针
int arr[5]={1,2,3,4,5};
int*p=arr; //直接写数组名,数组名就是数组的首地址
注意二维数组里的 arr[0]和&arr的数据类型,arr[0]与&arr[0][0]是相同的类型,&arr是int(*)[3][3]类型
#include<stdio.h>
int main()
{
/*int arr[4] = {1,2,3,4};
int* p = &arr;
printf("%p %p", arr,&arr);
printf("%p %p", arr+1, &arr+1);*/
int arr[3][3] = { {1,2,3},{4,5,6} ,{7,8,9} };
//printf("%p %p\n", &arr+1, arr+1);
int a = arr[0]; //“int”与“int *”的间接级别不同
int b = &arr; //“int”与“int (*)[3][3]”的间接级别不同
printf("%p %p", arr[0]+1,&arr+1);
return 0;
}
二维数组当作一维数组去访问
int* par = arr;//arr[0][0];
printf("%d", par[4]);
return 0;