在一维数组参数传递时,数组的边界非常重要,如果希望函数接受含有特定数量元素的数组,可以使用引用形参,如:
void func(int (&ary)[4])//此时函数只能接受大小为12的整型数组
{}
可以使用模板帮助我们判断数组的边界
template <int n>
void func1(int (&ary)[n])
{}
相应的,二维数组也可以表示如下:
template <int n,int m>
void func2(int (&ary)[n][m])
{}
完整示例如下:
#include <iostream>
using namespace std;
template<int n,int m>
void init(int (&ary)[n][m])//利用引用形参接受含有特定数量元素的二维数组
{//让编译器帮我们推导n和m的值
for(int i=0;i<n;++i)
for(int j=0;j<m;++j)
ary[i][j]=1;//将二维数组全部赋值为1
}
template<int n,int m>
void show(int (&ary)[n][m])
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<"ary["<<i<<"]["<<j<<"]="<<ary[i][j]<<", ";//把二维数组打印出来
cout<<endl;
}
}
int main()
{
int anArray[4][5];//声明一个二维数组
init(anArray);
show(anArray);
return 0;
}
程序运行结果: