Bereichsbasierte For-Schleife für ein Array, das an eine Nicht-Hauptfunktion übergeben wird
Frage:
In einem C-Projekt schlägt die Kompilierung fehl, wenn versucht wird, eine bereichsbasierte for-Schleife für ein Array zu verwenden, das an eine Nicht-Hauptfunktion übergeben wird. Der Code gibt einen Fehler aus, der darauf hinweist, dass kein passender Funktionsaufruf für begin(int*&) gefunden werden kann, während versucht wird, auf die bereichsbasierte for-Schleife in der Nicht-Hauptfunktion zuzugreifen.
Antwort:
Wenn Sie ein Array an eine Nicht-Hauptfunktion übergeben, zerfällt das Array in einen Zeiger und verliert wichtige Informationen über seine Größe. So aktivieren Sie eine bereichsbasierte for-Schleife innerhalb der Nicht-Hauptfunktion:
Array-Referenz verwenden: Übergeben Sie das Array als Referenz anstelle eines Zeigers. Dadurch bleiben die Größeninformationen erhalten:
<code class="cpp">void foo(int (&&bar)[3]);</code>
Generischer Ansatz:Verwenden Sie eine Funktionsvorlage mit einem Vorlagenparameter, der die Array-Größe angibt. Dieser Ansatz ermöglicht die Übergabe unterschiedlicher Array-Größen:
<code class="cpp">template <std::size_t array_size> void foo(int (&&bar)[array_size]);</code>
Durch die Beibehaltung der Größeninformationen kann die bereichsbasierte For-Schleife die Array-Elemente innerhalb der Nicht-Array-Elemente korrekt durchlaufen. Hauptfunktion.
Das obige ist der detaillierte Inhalt vonWarum schlägt eine bereichsbasierte for-Schleife fehl, wenn sie für ein Array verwendet wird, das an eine Nicht-Hauptfunktion in C übergeben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!