一.数组指针、
指向数组的指针
arr数组名是首元素的地址-arr[0]
有两个例外:1.size of(数组名)2.&(数组)
指针数组int *ch[5];
数组指针int (*ch)[5]
区分:
printf("%p\n",arr)// int * p= arr
printf("%p\n,arr[10])// int (*p)[10]=arr 两者输出的值是一样的但是类型不同
1.当数组指针指向一维数组 int (* p)[ ]= arr *(p+1)就是数组元素
2.当数组指向二维数组 int (* p)[5] = arr 指向的是二维数组的第一行
一下是一个例子:
#include <stdio.h>
void print2(int(*p)[5],int r,int c)
{
int i;
int j;
for(i=0;i<r;i++){
for(j=0;j<c;j++){
printf("%d",*(*(p+i)+j));//难点p表示每一行的首个元素
}
printf("\n");
}
}
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);
}
二.数组参数,指针参数
1.一维数组传参
2.二维数组传参
test(arr)是第一行的一个数组