在一些旧代码中,我遇到了声明为:
的函数 void f(int (&a)[5]);
我被告知这个阵列是赤裸裸的'。这是什么意思?
答案 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
的数组的引用,并且不能传递任何其他大小的数组。