Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
return array

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Timo O.
Gast





BeitragVerfasst am: 11. Dez 2003 20:52   Titel: return array

Hallo Forum

Habe mal ein Anfänger Problem.
Ich würder gerne aus einer Funktion ein Array zurückgeben.
Das ganze soll ungefähr so aussehen.

....
printf("%s", test());
....
char test(){
cahr text;
text[0]=15;
text=16;

return text;
}

Ist es überhaupt so ohne weiteres möglich Arrays zurückzugeben oder was muss ich ändern ?

MFG
Timo O.
 

Descartes
Gast





BeitragVerfasst am: 12. Dez 2003 7:25   Titel: Re: return array

Deine Funktion gibt kein Array zurück, sondern nur einen Zeiger auf ein Array.
Da Variablen immer nur lokale Gültigkeit besitzen, musst du sicherstellen dass der Zeiger den du zurück gibst auch ausserhalb deiner Funktion noch immer auf ein Array zeigt.
code:

/* kompilieren mit: gcc -std=c99 main.c */
#include <stdio.h> /* printf(), fprintf() */
#include <stdlib.h> /* malloc(), free() */

int* machWas(int * const array, const int length);
void zeigWas(const int * const array, const int length);

int main()
{
int* arr = NULL;

arr = malloc(10); // Speicher fuer das Array besorgen
if(arr==NULL)
{
fprintf(stderr, "ERROR: Speicherallokation fehlgeschlagen in Zeile %i\n", __LINE__);
exit(1);
}
arr = machWas(arr, 10); // Array Inhalte veraendern bzw. belegen
zeigWas(arr, 10); // Array Inhalt ausgeben
free(arr); // Speicher fuer das Array wieder freigeben
}

int* machWas(int * const array, const int length)
{
/* Array mit ein paar Werten fuellen */
for(int i=0; i<length; ++i)
array[i] = i*i;

return array;
};

void zeigWas(const int * const array, const int length)
{
/* jedes Element ausgeben */
for(int i=0; i<length; ++i)
printf("array(%i) = %i\n", i, array[i]);
};

 

Udo M.
Gast





BeitragVerfasst am: 13. Dez 2003 23:49   Titel: Re: return array

Wozu diese überflüssige Zuweisung?

arr = machWas(arr, 10);

Zur Anfänger-Verwirrung?

void machWas(...

tut es auch.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy