在一些旧代码中,我遇到过如下声明的函数:
void f(int (&a)[5]);
有人告诉我该数组是“裸露的”。这是什么意思?
最佳答案
类型 int (&a)[5]
表示“对 5 个 int
数组的引用(名为 a
)”。使用该类型允许您将数组传递给函数,而不会使其退化为指向其第一个元素的指针。
使用 5 个整数数组的引用而不是指向 int 的指针作为函数参数,可以让您传递数组而不会丢失信息。像 std::begin(a)
和 std::end(a)
这样的东西可以与数组引用一起使用,但不能与指向 int 的指针一起使用。另一方面,不可能将数组引用与动态分配的数组一起使用。
关于c++ - C++中传递裸数组是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39738143/