c++ - 传递数组的差异

标签 c++ arrays

基本上我有 2 个函数原型(prototype):

void f1(int p[10]); 

void f2(int (&p)[10]);

显然 f1 和 f2 都接受大小为 10 的数组,但我想知道 2 种语法之间有什么区别。

谢谢。

最佳答案

在第一个版本中,p 被耗尽为指针类型。您可以将不同大小的数组传递给函数。 sizeof 运算符将无法按预期工作。

在第二个版本中,p 是对大小为 10 的数组的引用。传递不同大小的数组将导致编译时错误。 sizeof 运算符将按预期工作。

关于c++ - 传递数组的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23507696/

相关文章:

c++ - placement new 是如何运作的?

c++ - 为什么 long long union 成员的对齐比包含的 union/struct 大?这个对吗?

c++ - emacs C/C++ 缩进 : different for pre and post comments//or: how can I make certain comments like//^ be indented extra?

c++ - 为什么使用带有自定义比较器的 std::sort 无法编译?

php - 从数组中取消链接()

c - 使用堆栈从数组中删除最后输入的偶数

c++ - 可以为数组分配初始化列表吗?

c++ - 使用 enable_shared_from_this 时出现私有(private)基类错误

javascript - 使用 for/in 将对象属性复制到数组中

c - 如何在 c 中打印字符的十进制表示形式?