1:第一种方法:直接传递,只是把二维数组的首地址传递进去,在函数内部访问的时候,需要组合重新组成计算行和列
void printArrayInFunction(int** arr,int arrSize,int colSize)
{
printf("testarray = %pn]", arr);
printf("testarray +1 = %pn]", arr+1);
printf("testarray[0][2] = %dn]", *(arr +2));
printf("testarray[1][1] = %dn]", *((arr +1* colSize) + 1));
}
上面重新进行和列的计算
第二种方位方式:直接传递指针数组,一个指针,指向二维数组的首行,数组包含两列。在函数内部可以直接以二维数组的形式访问
void printArrayInFunction_Sec(int (*arr)[2], int arrSize)
{
printf("testarray[0][2] = %dn]", arr[0][1]);
printf("testarray[1][1] = %dn]", arr[1][1]);
return;
}
第三种方式:直接传递二级指针,然后再内部把二级指针强行转化为指针数组 指针类型为整型,这样也可以再内部直接以二维数组的形式访问
void printArrayInFunction_third(int** arr, int arrSize, int colSize)
{
int(*arrTest)[2] =(int*)arr;
//printf("testarray = %pn]", arr);
//printf("testarray +1 = %pn]", arr + 1);
printf("testarray[0][1] = %dn]", arrTest[0][1]);
printf("testarray[1][1] = %dn]", arrTest[1][1]);
}
void printArray()
{
int testArray[][2] = { {1,2},{4,5},{6,7}};//init
printArrayInFunction(testArray, 3, 2);
printArrayInFunction_Sec(testArray, 3);
printArrayInFunction_third(testArray, 3, 2);
return;
}
打印结果:



