一般数据类型的函数形参在传入是实参时并不会有什么特别注意的地方,但是当我们需要一个数组作为函数形参时通常会传入错误的实参形式而导致函数调用错误。在函数的定义上可能会有以下两种定义方式:
void print(const int arr[])
{
}
void print(const int ia[10])
{
}
但其实在本质上这两个函数跟下面这个本质一样,都为形参为整型指针的一个函数
void print(const int* arr)
{
}
要实现正确的数组形参,需如下定义函数的形参:
void print(const int(*arr)[5])
{
cout << "指针传递" << endl;
for (auto each:*arr)
{
cout << each << endl;
}
}
void print(const int(&arr)[5])
{
cout << "引用传递" << endl;
for (auto each:arr)
{
cout << each << endl;
}
}