打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C语言二维数组做函数参数的几种情况

以下调用函数中均以 inta[3][4]; 为例说明 

(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,intN>

             fun(intp[M][N])

                   p[i][j]   }

(5)       实参为数组名,虚参数组的引用

            调用函数:                    fun(a);

           函数:                 template<int M,intN>

                            fun(int (&p)[M][N])

                               p[i][j] or*(p[i]+j) or*(*(p+i)+j)   }

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VC知识库文章 - 指针专题
二维数组和二级指针的传递问题
C/C++中二维数组和指针关系分析
CSDN技术中心 第一章 什么是数组名?----一个让你吃惊的事实!
C/C 函数指针与指针函数
C/C++中的指针和数组(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服