本文参考了如下链接:http://www.cnblogs.com/graphics/archive/2010/07/15/1777760.html
数组作为入参时,自动被转换为指针。因此数组定义的元素个数的参数无法带入函数。这不符合coder的预期,也是不严格和有风险的coding。
如何解决呢,一种办法是再加一个参数,指定元素个数
void Test(int* a, int n)
{
for (int i = 0; i < n; ++i)
{
cout << a[i] << endl ;
}
}
另外一种办法是传递数组的引用,本文的重点。
void Test(int (&a)[3])
{
for (int i = 0; i < 3; ++i)
{
cout << a[i] << endl ;
}
}
这样写数组a就不会被转换为指针了,而且有了元素个数的信息,调用的时候,也必须传递一个含有3个元素的数组
int a[3] = {1, 2, 3} ;
Test(a) ; // ok
int b[1] = {1} ;
Test(b) ; // error, can not convert parameter a from int[1] to int(&)[3]