⼆级指针传递⼆维数组的⼏种⽅法
1:第⼀种⽅法:直接传递,只是把的⾸地址传递进去,在函数内部访问的时候,需要组合重新组成计算⾏和列
上⾯重新进⾏和列的计算
第⼆种⽅位⽅式:直接传递指针数组,⼀个指针,指向⼆维数组的⾸⾏,数组包含两列。在函数内部可以直接以⼆维数组的形式访问
第三种⽅式:直接传递⼆级指针,然后再内部把⼆级指针强⾏转化为指针数组 指针类型为整型,这样也可以再内部直接以⼆维数组的形式访问
打印结果:void  printArrayInFunction (int ** arr ,int  arrSize ,int  colSize ){    printf ("testarray = %p\n]", arr );    printf ("testarray +1 = %p\n]", arr +1);    printf ("testarray[0][2] = %d\n]", *(arr +2));    printf ("testarray[1][1] = %d\n]", *((arr +1* colSize ) + 1));}
1
2
3
4
5
指针与二维数组6
7void  printArrayInFunction_Sec (int  (*arr )[2], int  arrSize ){    printf ("testarray[0][2] = %d\n]", arr [0][1]);    printf ("testarray[1][1] = %d\n]", arr [1][1]);    return ;}
1
2
3
4
56void  printArrayInFunction_third (int ** arr , int  arrSize , int  colSize ){    int (*arrTest )[2] =(int *)arr ;    //printf("testarray = %p\n]", arr);    //printf("testarray +1 = %p\n]", arr + 1);    printf ("testarray[0][1] = %d\
n]", arrTest [0][1]);    printf ("testarray[1][1] = %d\n]", arrTest [1][1]);}
1
2
3
4
5
6
7
8void  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 ;}
1
2
3
4
5
6
7
8
9
10

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。