arr //001CFB84
arr+1 //001CFB88 4
&arr[0] //001CFB84
&arr[0]+1 //001CFB88 4
&arr //001CFB84
&arr+1 //001CFBAC 40
arr 数组名--> 首元素地址(二维数组的首元素是它的第一行)
arr = &arr[0]
数组名通常表示的都是数组首元素的地址
但是有2个例外:
1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节
2.&数组名,这里的数组名表示的依然是整个数组,所以&数组名取出的层整个数组的地址
&arr 数组地址 &arr+1 跳过数组
指针数组写法
int *p1[10]
数组指针写法
int (*p2)[10]
对于二维数组来说,arr 是第一行的地址
arr ------- 第一行的地址 ------- 一组数组的地址
传参 print2(arr,3,5)
定义函数 void print2(int (*p)[5],int r,int c)
void print2(int (*p)[5], int r, int c)
{
int i = 0;
for (i = 0; i < r; i++)
{
int j = 0;
for (j = 0; j < c; j++)
{
//printf("%d ", *(*(p + i) + j));
printf("%d ", p[i][j]);
}
printf("\n");
}
}
void print3(int* p)
{
}
int main()
{
int arr[3][5] = { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 };
print2(arr, 3, 5);
int data[10] = {1,2,3,4,5,6,7,8,9,10};
print3(data);
return 0;
}