Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich eine bereichsbasierte for-Schleife für ein Array verwenden, das an eine Nicht-Hauptfunktion in C übergeben wird?

Wie kann ich eine bereichsbasierte for-Schleife für ein Array verwenden, das an eine Nicht-Hauptfunktion in C übergeben wird?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-25 06:57:02276Durchsuche

How can I use a range-based for-loop 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

In C kann eine bereichsbasierte For-Schleife sein Wird verwendet, um über ein Array zu iterieren. Wenn ein Array jedoch an eine Nicht-Hauptfunktion übergeben wird, zerfällt es in einen Zeiger und verliert seine Größeninformationen.

Um dieses Problem zu beheben und die Verwendung einer bereichsbasierten for-Schleife zu ermöglichen, muss das Array sollte referenziert werden, anstatt als Zeiger übergeben zu werden. Dadurch bleiben die Größeninformationen des Arrays erhalten. Hier sind die modifizierten Beispiele, die den richtigen Ansatz veranschaulichen:

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

// Generic implementation
template <std::size_t array_size>
void foo(int (&amp;bar)[array_size]) {
  for (int i : bar) {
    cout << i << endl;
  }
}</code>

Das obige ist der detaillierte Inhalt vonWie kann ich eine bereichsbasierte for-Schleife für ein Array verwenden, das an eine Nicht-Hauptfunktion in C übergeben wird?. 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