⼆级指针传递⼆维数组的⼏种⽅法
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小时内删除。
发表评论