return array

Post Reply
Message
Author
Timo O.

return array

#1 Post by Timo O. »

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<font size="1">;
text[0]=15;
text<font size="1">=16;

return text;
}

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

MFG
Timo O.

Descartes

Re: return array

#2 Post by Descartes »

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.
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
/* 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\<!--no-->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[<!--no-->i<!--no-->] = 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\<!--no-->n", i, array[<!--no-->i<!--no-->]);
};
</font><hr></pre></blockquote>

Udo M.

Re: return array

#3 Post by Udo M. »

Wozu diese überflüssige Zuweisung?

arr = machWas(arr, 10);

Zur Anfänger-Verwirrung?

void machWas(...

tut es auch.

Post Reply