Home >Backend Development >C++ >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 (&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; } }</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!