C语言中,把二维数组作为形参进行传递,有以下几种形式:
case 1: void output_printf(int **a,int row,int col)
限制条件:形参二重指针,实参也要求二重指针,用于二维数组动态分配
case 2: void output_printf(int a[4][6],int row,int col)
限制条件: 显示的指定行列
case 3: void output_printf(int a[][6],int row,int col)
限制条件:显示指定列
case 4 :void output_printf(int (*a)[6],int row,int col)
限制条件:定义一维指针数组,显示指定列
case 5 :void output_printf(int (*a[])[6],int row,int col)
限制条件:显示指定列,不常用
实例:
#include <stdio.h>
#include <stdlib.h>
void output_printf(int **a,int row,int col)
{
printf("two array debug,rwo:%d\tcol:%d\n",row,col);
int i = 0,j = 0;
for(i = 0;i < row; i++){
for(j = 0; j < col; j++){
printf("%0x\t",a[i][j]);
}
printf("\n");
}
printf("\n");
}
int main(int argc,char **argv)
{
int row = 0,col = 0;
printf("input row\n");
scanf("%d",&row);
printf("intput col\n");
scanf("%d",&col);
int **p = (int *)malloc(sizeof(int *) * row);
int i = 0;
for(i = 0 ;i < row; i++){
p[i] = (int)malloc(sizeof(int) * col);
}
output_printf(p,row,col); //实参双重指针传递
return 0;
}