Zeiger aus Funktionen zurückgeben
-
Hi,
wie kann ich einen Zeiger als Rückgabe-Typ einer Funktion programmieren ?
z.B.
...
int auto = 10;int* ptrWert = &auto;
return ???und wie muss ich den Rückgabe-Typ der Funktion deklarieren ?
Thx
-
1. auto kannst du nicht als Variablennamen benutzen, da dies ein Schlüsselwort ist
2. Du gibst einfach den Pointer Typ an, wie bei einer normalen Variable, also zB.
int *funktion();
-
Das ist nur ein Beispiel gewesen ups aber hast recht habe eben in VC gesehen das das resierviert ist.
und wie mache ich das wenn ich in der Funktion einen Zeiger auf ein Struct zurückgeben will ?
MfG
-
Genauso.
struct Foo { int a, b; }; struct Foo * funktion(void);
-
ups sorry ich glaube ich habe mich vertan.
Meinte eigentlich wie ich einen Zeiger aus einer Memberfunktion zurückgeben kann nicht einen Zeiger "auf" einer Funktion z.B.
struct Foo* ClassA::function() { struct buff { int low; int high; }; buff tmp; tmp.low = 10; tmp.high = 20; return *tmp }
-
Tom20 schrieb:
Meinte eigentlich wie ich einen Zeiger aus einer Memberfunktion zurückgeben kann nicht einen Zeiger "auf" einer Funktion
Verstehe nicht ganz, was du mir damit sagen willst. Meine Funktion gibt einen Zeiger auf ein struct Foo zurück. BTW gibt es keine Memberfunktionen in C, du fragst im falschen Forum.
Zu deinem Code:
a) Du deklarierst den Rückgabetyp als "Zeiger auf struct Foo", gibst aber einen "Zeiger auf struct buff" zurück. Typfehler.
b) Du gibst einen Zeiger auf eine lokale Variable tmp zurück. Da diese nach Ende der Funktion aufhört zu existieren, zeigt der zurückgegebene Zeiger auf ungültigen Speicher. Ein Zugriff darauf hätte undefiniertes Verhalten.
-
mach es hald einfach so:
struct buff { int low; int high; }; ... void ClassA::function(struct buff *param) { param->low = 10; param->high = 20; }
Ansonsten schließ ich mich Bashar an (falsches Forum!).