一 对应关系:
指针数组和二级指针相对应
二维数组和数组指针相对应
二 代码:
#include<stdio.h>
#define max 5
#define row 3
#define col 4
//指针数组和数组指针相对应
//数组指针和二级指针相对应
//一维数组作为函数的参数
void one_arr_init(int arr[],int len);
void one_arr_printf(int arr[],int len);
//二维数组作为函数参数
void two_arr_init(int (*arr)[col],int h,int l);
void two_arr_printf(int(*arr)[col],int h,int l);
//数组指针作为函数传参
void three_arr_init(char **arr,int len);
void three_arr_printf(char **arr,int len);
//函数指针的使用
int main(int argc, const char *argv[])
{
puts("*****一维数组传参*******");
int a[max] = {0};
one_arr_init(a,max);
one_arr_printf(a,max);
puts("");
printf("*********************\n");
puts("********二维数组传参******");
int aa[row][col] = {0};
two_arr_init(aa,row,col);
two_arr_printf(aa,row,col);
printf("***********************\n");
puts("*********数组指针传参*******");
char *p[5] = {NULL};
char s[2][10] = {0};
for(int i = 0; i < 2;i++){
p[i] = s[i];
}
three_arr_init(p,2);
three_arr_printf(p,2);
return 0;
}
//一维数组
void one_arr_init(int arr[],int len){
for(int i = 0;i < len;i++){
scanf("%d",&arr[i]);
}
}
void one_arr_printf(int arr[],int len){
for(int i = 0;i < len;i++){
printf("%d\t",*(arr+i));
}
}
//二维数组
void two_arr_init(int (*arr)[col],int h,int l){
for(int i = 0;i < h; i++){
for(int j = 0;j < l; j++){
scanf("%d",&arr[i][j]);
}
}
}
void two_arr_printf(int(*arr)[col],int h,int l){
for(int i = 0;i < h; i++){
for(int j = 0;j < l; j++){
printf("%d\t",*(*(arr+i)+j));
}
puts("");
}
}
//数组指针
void three_arr_init(char **arr,int len){
for(int i = 0; i < len; i++ ){
scanf("%s",*(arr+i));
}
}
void three_arr_printf(char **arr,int len){
for(int i = 0;i < len; i++){
printf("%s ",*(arr+i));
}
puts("");
}