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

标签 c++

在一些旧代码中,我遇到过如下声明的函数:

 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/

相关文章:

java - 如何从n组不同大小的数字中选择n个数字?

c++ - 寻找 "The specified module could not be found"的 dll

C# 接口(interface) C++ DLL?

c++ - 是否可以运行声明的函数而不必包含它们

c# - C++/CLI System.Timers.Timer 在将 Interval 设置为 100ms 时已过去 20 秒

c++ - pugiXML:无法遍历 sibling !只加载第一个

c++ - 是否可以使用 CR 之类的东西一次刷新两行文本? (C++)

c++ - 从字符串中删除逗号

c++ - 无法删除 std::vector & std::array?

c++ - Make - "Treat warning as error"对于特定文件