如下:
template <class Type, int size>
Type min( Type (&r_array)[size] ) { /* ... */ }
void f( int pval[3] ) {
// 错误: Type (&)[] != int*
int jval = min( pval );
}
int main()
{
int arr[] = {1,2,3};
min(arr);
}
问题:
上面的问题是因为pval是个指针而非引用导致的,但是我在main函数中通过定义一个数组,然后通过数组名调用,min(arr),这样的话不会有问题。
1、执行min(arr);中,传递的是数组的引用? 那么我们平时在调用数组名时都是通过将其转换成指针使用的吗?但是如果遇到上述情况,也就是min( Type (&r_array)[size] ) 才会将数组作为引用传递吗?
2、调用f()函数时,数组pval是如何被初始化来接受arr的呢,正如我上面说的,数组在传递时一般是通过指针来传递的,所以pval被当做指针而非数组引用吗?
问题核心:
数组一般在传递和使用时是被当做指针来使用,而当遇到作为引用min( Type (&r_array)[size] ) 参数传递时才会被当做引用?