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