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;//计算下标,并对该位置元素进行操作
}