Heim >Backend-Entwicklung >C++ >Wie verwende ich bereichsbasierte for-Schleifen für Arrays, die in C an Nicht-Hauptfunktionen übergeben werden?

Wie verwende ich bereichsbasierte for-Schleifen für Arrays, die in C an Nicht-Hauptfunktionen übergeben werden?

Susan Sarandon
Susan SarandonOriginal
2024-10-25 09:29:29899Durchsuche

How to Use Range-Based for-Loops on Arrays Passed to Non-main Functions in C  ?

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 (&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;
  }
}

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 (&amp;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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn