Heim > Backend-Entwicklung > C++ > Hauptteil

Warum schlägt eine bereichsbasierte for-Schleife fehl, wenn sie für ein Array verwendet wird, das an eine Nicht-Hauptfunktion in C übergeben wird?

Linda Hamilton
Freigeben: 2024-10-25 02:15:29
Original
985 Leute haben es durchsucht

Why does a range-based for-loop fail when used on an array passed to a non-main function in C  ?

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:

  1. 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>
    Nach dem Login kopieren
  2. 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>
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!