C Rückgabe eines Zeigers aus Funktionen
Im vorherigen Kapitel haben wir gelernt, wie man in C Arrays aus Funktionen zurückgibt. Ebenso erlaubt C, einen Zeiger aus einer Funktion zurückzugeben. Dazu müssen Sie eine Funktion deklarieren, die einen Zeiger zurückgibt, wie unten gezeigt:
int * myFunction()
{
.
.
.
}
Darüber hinaus unterstützt die Sprache C nicht das Zurückgeben der Adresse einer lokalen Variable beim Aufruf einer Funktion, es sei denn, die lokale Variable ist alsstaticVariable definiert.
Betrachten wir nun die folgende Funktion, die 10 Zufallszahlen erzeugt und sie unter Verwendung des Array-Namens zurückgibt, der den Zeiger repräsentiert (d. h. die Adresse des ersten Array-Elements), wie folgt:
Beispiel
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
/*Funktion zum Erzeugen und Zurückgeben von Zufallszahlen*/
int * getRandom( )
{
static int r[10];
int i;
/*Setze den Startwert*/
srand( (unsigned)time( NULL ) );
for ( i = 0; i < 10; ++i)
{
r[i] = rand();
printf("%d\n", r[i] );
}
return r;
}
/*Die Hauptfunktion zum Aufrufen der oben definierten Funktion*/
int main ()
{
/*Ein Zeiger auf eine Ganzzahl*/
int *p;
int i;
p = getRandom();
for ( i = 0; i < 10; i++ )
{
printf("*(p + [%d]) : %d\n", i, *(p + i) );
}
return 0;
}
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
1523198053 1187214107 1108300978 430494959 1421301276 930971084 123250484 106932140 1604461820 149169022 *(p + [0]) : 1523198053 *(p + [1]) : 1187214107 *(p + [2]) : 1108300978 *(p + [3]) : 430494959 *(p + [4]) : 1421301276 *(p + [5]) : 930971084 *(p + [6]) : 123250484 *(p + [7]) : 106932140 *(p + [8]) : 1604461820 *(p + [9]) : 149169022Weitere Erweiterungen