首页 > 后端开发 > C++ > 正文

为什么基于范围的 for 循环在传递给 C 中非主函数的数组上使用时会失败?

Linda Hamilton
发布: 2024-10-25 02:15:29
原创
985 人浏览过

Why does a range-based for-loop fail when used on an array passed to a non-main function in C  ?

数组上基于范围的 For 循环传递给非主函数

问题:

在 C 项目中,尝试在传递给非主函数的数组上使用基于范围的 for 循环无法编译。当尝试访问非主函数中基于范围的 for 循环时,代码会抛出错误,导致无法找到 begin(int*&) 的匹配函数调用。

答案:

当您将数组传递给非主函数时,数组会衰减为指针,从而丢失有关其大小的关键信息。要在非主函数中启用基于范围的 for 循环:

  1. 使用数组引用: 通过引用而不是指针传递数组。这保留了大小信息:

    <code class="cpp">void foo(int (&&bar)[3]);</code>
    登录后复制
  2. 通用方法: 使用带有指定数组大小的模板参数的函数模板。这种方法允许传递不同的数组大小:

    <code class="cpp">template <std::size_t array_size>
    void foo(int (&&bar)[array_size]);</code>
    登录后复制

通过保留大小信息,基于范围的 for 循环可以在非范围内正确地迭代数组元素。主要功能。

以上是为什么基于范围的 for 循环在传递给 C 中非主函数的数组上使用时会失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!