一维数组传参:
#include<stdio.h>
void test(int arr[])//可以拿数组接收数组,[]里可以不写
{}
void test(int arr[10])//可以拿数组接收数组
{}
void test(int *arr)//可以拿指针接收数组首元素地址,类型是int型
{}
void test2(int *arr[20])//可以拿指针数组接收指针数组,[]里可以省略
{}
void test2(int **arr)//可以拿二级指针接收一级指针的地址
{}
int main()
{
int arr[10]={0};
int *arr2[20]={0};
test(arr);
test2(arr2);
return 0;
}
二级数组传参:
#include<stdio.h>
void test(int a[3][5])//可以拿数组接收数组
{}
void test(int a[][5])//行可以省略
{}
void test(int a[3][])//error 列不能省略
{}
void test(int *arr)//不能拿整形指针接收二维数组第一行的地址
{}
void test(int *arr[5])//不能拿指针数组接收二维数组第一行的地址
{}
void test(int (*arr)[5)//可以拿数组指针接收二维数组第一行的地址
{}
void test(int **arr)//不能拿二级指针接收数组的地址
{}
int main()
{
int arr[3][5]={0};
test(arr);
return 0;
}
当函数参数为二级指针时,可以接受的参数:
#include<stdio.h>
void test(char **p)
{
}
int main()
{
char c = 'b';
char *pc = &c;
char **ppc = &pc;
char *arr[10];
test(&pc);//可以传一级指针变量的地址
test(ppc);//可以传二级变量本身
test(arr);//可以传存放一级指针的数组的数组名
return 0;
}