”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 C++ 中传递给非主函数的数组上使用基于范围的 for 循环?

如何在 C++ 中传递给非主函数的数组上使用基于范围的 for 循环?

发布于2024-11-09
浏览:797

How can I use a range-based for-loop on an array passed to a non-main function in C  ?

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

在 C 中,基于范围的 for 循环可以是用于迭代数组。但是,当数组传递给非主函数时,它会衰减为指针,从而丢失其大小信息。

要解决此问题并启用基于范围的 for 循环,数组应该被引用而不是作为指针传递。这保留了数组的大小信息。以下是演示正确方法的修改示例:

void foo(int (&bar)[3]);

int main() {
  int bar[3] = {1,2,3};
  for (int i : bar) {
    cout << i << endl;
  }
  foo(bar);
}

void foo(int (&bar)[3]) {
  for (int i : bar) {
    cout << i << endl;
  }
}

// Generic implementation
template <std::size_t array_size>
void foo(int (&bar)[array_size]) {
  for (int i : bar) {
    cout << i << endl;
  }
}
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3