C语言 二维数组做函数参数的几种情况
(1)???????實參為數組元素地址,虛參為元素類型指針
(a)???????調用函數:fun(*a,3*4);??//*a也可為a[0] or &a[0][0]
函數: fun(int *p,int n)??//*p也可為p[]?????????????????????????????????{???p[i] or *(p+i) }
(b)???????調用函數:fun(*a,3,4);??//*a也可為a[0] or &a[0][0]
???函數: fun(int *p,int m,int n) //*p也可為p[] ?????????????????????????????
????{???*(p+i*n+j)??} ?
(2)???????實參為數組名,虛參為指向行的指針
??????????調用函數:fun(a,3);??//a也可為&a[0]
??????????函數:?fun(int (*p)[4],int m) //(*p)[4]也可為p[][4]
???????????????????????????????????{???p[i][j] or *(p[i]+j)??or ??*(*(p+i)+j) ??}
(3)???????實參、虛參都用指針數組
????????????因為二維數組類型為 (*)[] ,指針數組類型為 *[],所以不能把二維數組直接傳給指針數組。
???????????調用函數:
int *b[3];???for(i=0;i<3;i++)??b[i]=a[i]; fun(b,3,4); ??????????函數:?fun(int??*p[],int m,int n) //*p[]也可為**p ??
???????????????????????????????{???p[i][j] or *(p[i]+j)??or ??*(*(p+i)+j) ??}
(4)???????使用模板編寫通用性更強的函數
???????????調用函數:fun<3,4>(a);
???????????函數:template <int M,int N>
???????????????fun(int p[M][N])
?????????????????????{ ???p[i][j] ???}
(5)???????實參為數組名,虛參數組的引用
????????????調用函數:?????????????????????fun(a);
???????????函數:??????????????????template<int M,int N>
????????????????????????????????fun(int (&p)[M][N])
????????????????????????????????{????p[i][j] or *(p[i]+j) or *(*(p+i)+j)????}
轉載于:https://www.cnblogs.com/hao02171990/archive/2013/04/09/3010864.html
總結
以上是生活随笔為你收集整理的C语言 二维数组做函数参数的几种情况的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery的$.ajax()与php后
- 下一篇: webstorm 快捷键持续更新中...