在codereview中回答我的问题时。Stackexchange,建议使用
template <class T, size_t size>
T peak(const T (&arr)[size]) {
的
int peak(int * arr, size_t size)
{
现在我有两个问题,
- 编译器如何计算大小,而c++编译器不能绑定检查 如果我用arr[size]代替(&arr)[size]会怎么样?我的意思是,有没有像(尺寸)这样的东西。如果是,有什么区别?
在第一种情况下,通过引用传递数组。该函数将只接受数组(而不是指针)。数组的大小总是已知的,由编译器知道,并在模板形参中解包。
在第二种情况下,您可以传递任何指针或数组(后者将衰变为为指针),但您必须指定大小,因为编译器无法推断指针指向的内存大小。