读C++ Common Knowledge(二)
sshong 发表于2007年12月8日 13:25:00 更新于2008年3月21日 19:19:00
6.用数组作为形参(Array Formal Arguments)
c++中,一个数组名将作为指向第一个元素的指针进行传递。如
void average(int ary[12]);//arg is int*
如果我们要精确的保证传递的数组的边界与函数需要的相同,我们可以使用引用形参, void average(int (&ary)[12]);另一种更传统,使用更广泛的解决方法是显式传递数组的大小,void average(int arg[], int size);
多维数组形参看上去似乎更有挑战性。
void process(int ary[10][20]),因为多维数组是数组的数组,所以数组名是一个指向数组的指针。void process(int (*ary)[20])。高效的处理多维数组形参的方法通常是数组的维数,并由程序员自己来进行下标位置计算。
void process_2d(int* a,int n, int m)//a is an n by m array
{
  for(int i=0;i<n)
    for(int j=0;j<m;++j)
      a[i*m+j]=0;//计算下标,并对该位置元素进行操作
}
总之,数组形参是一个很头疼的问题,使用的时候要尽量注意。
标签:无分类:C++阅读:2668
评论
暂无评论
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅