在C ++中传递裸数组是什么意思

时间:2016-09-28 04:36:56

标签: c++

在一些旧代码中,我遇到了声明为:

的函数
 void f(int (&a)[5]);

我被告知这个阵列是赤裸裸的'。这是什么意思?

2 个答案:

答案 0 :(得分:2)

类型int (&a)[5]表示"引用(名为a)到5 int s"的数组。使用该类型允许您将数组传递给函数,而不会将其衰减为指向其第一个元素的指针。

使用引用数组的5-int而不是指向指针的int作为函数参数,可以传递数组而不会丢失信息。 std::begin(a)std::end(a)之类的东西可以使用引用数组,但不能使用指向int的指针。另一方面,使用动态分配数组的引用数组是不可能的。

答案 1 :(得分:1)

void f(int (&a)[5]);

意味着int(&a)[5]确实是对大小为5的数组的引用,并且不能传递任何其他大小的数组。

相关问题