double** als Rückgabewert
-
Hallo allerseits,
leider fehlen mir etwas C-Kenntnisse um mein Problem alleine zu lösen, auch die Suche bringt mir nicht viele Ergebnisse.
Mein Problem:
Ich habe eine Methode, die neben einigen InputParameter einen OutputParameter vom Typ double** hat.Also ungefähr so:
[code] MyMethod ( double[3] Input1, double* Input2, double** OutPut ) [/code]
Allerdings funktioniert das nicht so ganz! Die Variable wird in dieser Methode allokiert, da ich von außerhalb nicht weiss wie groß sie sein muss.
Wie bekomme ich es hin, dass diese OutputVariable auch noch in der rufenden Methode gültig ist, und ich auf dessen Array zugreifen kann?
Danke allerseits für Hilfe!
Gruss Flo
-
Hast du Speicher mit malloc()/calloc() reserviert? Falls nicht, mach das. Aber das freigeben mit free() nicht vergessen.
-
ich hab den speicher mit malloc reserviert, aber in dieser methode drin. Komm ich aus dieser Methode wieder raus ist mein double** OutParameter NULL.
Hast Du noch eine Idee?
-
Ähmmm, sorry. Hab ich vergessen zu erwähnen. Du musst den Zieger von der Fkt. natürlich auch zurückgeben, also:
double ** MyMethod(...)
-
Etwas Code wäre nützlich, denn theoretisch geht das so wie du es beschrieben hast.
-
Wie soll das gehen wenn er den double ** als Parameter übergibt? malloc() liefert irgendeine Adresse zurück, ganz sicher nicht die des übergebenen Pointers.
-
Ich denke er möchte Speicher für Double-Werte (keine Pointer) reservieren und übergibt einen Pointer auf den Pointer damit er den Wert veränder kann. Hier wäre wohl ein Rückgabewert besser. Aber es funktioniert schon nach der Beschreibung:
#include <stdlib> #include <stdio> void reservierung(unsigned int const& anzahl, double ** pointer) { *pointer = (double*)malloc(anzahl * sizeof(double)); } int main() { double * p = NULL; reservierung(10, &p); for(unsigned int i=0; i<10; ++i) { p[i] = i * i; } for(unsigned int i=0; i<10; ++i) { printf("%f\n", p[i]); } getchar(); }
-
FireFlow schrieb:
Hier wäre wohl ein Rückgabewert besser. Aber es funktioniert schon nach der Beschreibung:
Bei beiden Sätzen volle Zustimmung.