①定义一个二维数组
int matrix[2][5]={ {1,2,3,4,5},{6,7,8,9,10} };
②声明一个指针处理这个数组
int (*p_matrix)[5]=matrix;//p_matrix的类型为int **,而不是int *,
p_matrix=matrix=&matrix[0](int * 类型)≠&matrix[0][0](int * 类型),函数传参时要注意。
方括号[ ]中的5表示二维数组每一行含有5个元素。注意()一定不能省,如果去掉括号,int *p_matrix [5]=matrix表示的是一个含五个指针元素的数组,即指针数组。
③将二维数组作为参数传递
方法1. void function(int matrix[ ][5],int row){ };
方法2. void function(int (*p_matrix)[5],int row){ };
Demo如下:
#include <stdio.h>
void show(int(*p_matrix)[5],int n){
for(int i=0;i<n;i++){
for(int j=0;j<5;j++){
printf("matrix[%d][%d]=%d\n",i,j,*(*(p_matrix+i)+j));
}
}
}
int main(){
int matrix[2][5]={ {1,2,3,4,5},{6,7,8,9,10} };
show(matrix,2);//或者show(matrix[][5],2)
return 0;
}
结果显示为:
matrix[0][0]=1
matrix[0][1]=2
matrix[0][2]=3
matrix[0][3]=4
matrix[0][4]=5
matrix[1][0]=6
matrix[1][1]=7
matrix[1][2]=8
matrix[1][3]=9
matrix[1][4]=10