Bereichsbasierte for-Schleife für ein Array, das an eine Nicht-Hauptfunktion übergeben wird
Bei der Übergabe eines Arrays als Argument an eine Nicht-Hauptfunktion Funktion können bereichsbasierte For-Schleifen aufgrund des Verlusts von Größeninformationen fehlschlagen. So lösen Sie dieses Problem:
Im bereitgestellten Code zerfällt bar bei der Übergabe an foo in einen Zeiger und verliert seine Größe. Um die Array-Größe beizubehalten, können wir sie mithilfe eines Array-Referenztyps als Referenz übergeben:
<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; } }
Alternativ können wir einen generischen Ansatz mit einer Vorlagenfunktion verwenden, die Arrays jeder Größe automatisch akzeptiert:
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { for (int i : bar) { cout << i << endl; } } int main() { int bar[3] = {1, 2, 3}; for (int i : bar) { cout << i << endl; } foo(bar); }</code>
Durch die Beibehaltung der Array-Größeninformationen können bereichsbasierte For-Schleifen erfolgreich verwendet werden, wenn Arrays an Funktionen übergeben werden.
Das obige ist der detaillierte Inhalt vonWie verwende ich bereichsbasierte For-Schleifen mit Arrays, die an Nicht-Hauptfunktionen in C übergeben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!