[C] Array Rückgabe in Funktionen

Razorhawk

Webdesigner und MSP
Ich wollte mal fragen wie ich in C Arrays zurückgeben kann mit return!

Hab was für C++ gefunden, funktioniert aber natürlich nicht in C!
 
Hallo da gibt es mehrere Möglichkeiten:

Code:
//1. Möglihckeit ist ein potentielles Speicherleak da sich der Aufrufer um die Freigabe kümmern muss
int* foo1(){
    int* test = (int*)malloc(MAX_ARRAY_SIZE);
    return test;
}

//2. Möglichkeit geht garantiert in die Hose da eine lokale Referenz zurückgegeben wird
int* foo2(){
    int test[MAX_ARRAY_SIZE];
    return test;
}

//3. Möglichkeit geht ist aber nicht schön anzusehen. Verwendung von static kann ungewünschte Nebeneffekte haben
int* foo3(){
    static int test[MAX_ARRAY_SIZE];
    return test;
}

//4. Möglichkeit ist call by reference und sicherlich die beste. (Aufrufer muss selbst Speicher reservieren)
void foo4(int* _retval){
    int i = 0;
    for(; i < MAX_ARRAY_SIZE; i++) *_retval[i] = 0;
}

Gruß

RedWing
 
Zurück