C++ Rückgabe eines Zeigers aus Funktionen

C++ Zeiger

Im vorherigen Kapitel haben wir gelernt, wie man in C++ ein Array aus einer Funktion zurückgibt. Ebenso erlaubt es C++, einen Zeiger aus einer Funktion zurückzugeben. Dazu müssen Sie eine Funktion deklarieren, die einen Zeiger zurückgibt, wie folgt:

int * myFunction()
{
.
.
.
}

Darüber hinaus unterstützt C++ nicht die Rückgabe der Adresse einer lokalen Variablen außerhalb der Funktion, es sei denn, die lokale Variable ist als statische Variable definiert.

Betrachten wir nun die folgende Funktion, die 10 Zufallszahlen erzeugt und sie mithilfe eines Array-Namens zurückgibt, der einen Zeiger darstellt (d. h. die Adresse des ersten Array-Elements), wie folgt:

Beispiel

#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
// Funktion zum Erzeugen und Zurückgeben von Zufallszahlen
int * getRandom( )
{
  static int  r[10];
 
  // Startwert setzen
  srand( (unsigned)time( NULL ) );
  for (int i = 0; i < 10; ++i)
  {
    r[i] = rand();
    cout << r[i] << endl;
  }
 
  return r;
}
 
// Hauptfunktion, um die oben definierte Funktion aufzurufen
int main ()
{
   // ein Zeiger auf eine Ganzzahl
   int *p;
 
   p = getRandom();
   for ( int i = 0; i < 10; i++ )
   {
       cout << "*(p + " << i << ") : ";
       cout << *(p + i) << endl;
   }
 
   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:

624723190
1468735695
807113585
976495677
613357504
1377296355
1530315259
1778906708
1820354158
667126415
*(p + 0) : 624723190
*(p + 1) : 1468735695
*(p + 2) : 807113585
*(p + 3) : 976495677
*(p + 4) : 613357504
*(p + 5) : 1377296355
*(p + 6) : 1530315259
*(p + 7) : 1778906708
*(p + 8) : 1820354158
*(p + 9) : 667126415

C++ Zeiger

Weitere Erweiterungen