我们知道函数参数推断的时候,有可能会产生Array-To-Point这样的转化(见"C++函数重载时候的匹配等级"的第二条).例如:
void foo(const int*);
int hu[10];
foo(hu);//ok,这里就是Array-To-Point的转换
但是当我们的函数的参数是引用的时候,这样的转化被抑制了
void foo(const int*&);
int hu[10];
int *p=new int;
foo(p);//ok
foo(hu);//error,这里不能将int [10]转换为const int *&
所以数组名就是指向第一个元素的相应类型的指针,这句话要看情况,这个例子说明他们还是存在差别的.

浙公网安备 33010602011771号