Bereichsbasierte For-Schleife für ein Array, das an eine Nicht-Hauptfunktion übergeben wird
Beim Zuweisen eines Arrays zu einem Zeiger in einem Funktionsaufruf, Der Compiler leitet den Zeigertyp ab und verliert wichtige Informationen: die Array-Größe. Diese Diskrepanz löst Fehler aus, wenn versucht wird, bereichsbasierte For-Schleifen innerhalb der Funktion auszuführen.
Um dieses Problem zu beheben, besteht eine Lösung darin, eine Array-Referenz anstelle eines Zeigers zu verwenden. Dadurch behält die Funktion das Wissen über die Größe des Arrays bei:
<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 kann ein generischer Ansatz verwendet werden, indem ein Vorlagenparameter eingeführt wird, der die Array-Größe darstellt:
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { for (int i : bar) { cout << i << endl; } }</code>
By Durch die Nutzung dieser Techniken wird es möglich, bereichsbasierte for-Schleifen erfolgreich auf Arrays auszuführen, die an Nicht-Hauptfunktionen übergeben werden.
Das obige ist der detaillierte Inhalt vonWie verwende ich bereichsbasierte for-Schleifen für Arrays, die in C an Nicht-Hauptfunktionen übergeben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!