C Rückgabe eines Zeigers aus Funktionen

C Zeiger

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]) : 149169022

C Zeiger

Weitere Erweiterungen