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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-10-25 06:57:02276browse

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

Range-based for-loop on array passed to non-main function

In C , a range-based for-loop can be used to iterate over an array. However, when an array is passed to a non-main function, it decays into a pointer, losing its size information.

To resolve this issue and enable the use of a range-based for-loop, the array should be referenced instead of being passed as a pointer. This retains the array's size information. Here are the modified examples demonstrating the correct approach:

<code class="cpp">void foo(int (&amp;bar)[3]);

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

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

// Generic implementation
template <std::size_t array_size>
void foo(int (&amp;bar)[array_size]) {
  for (int i : bar) {
    cout << i << endl;
  }
}</code>

The above is the detailed content of How can I use a range-based for-loop on an array passed to a non-main function in C ?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn