Rückgabewerte von Funktionen
-
Hallo!
Hat jemand einen Beispielcode,
wie eine Funktion deklariert wird, die eine Struktur zurückliefert?Also Deklaration, Definition.
Daneben: Welche Rückgabewerte sind eigentlich überhaupt möchlich, was kann ich zurückgeben?
Zero
-
Hallo,
Zero_Clamping schrieb:
Hat jemand einen Beispielcode,
wie eine Funktion deklariert wird, die eine Struktur zurückliefert?struct foo { int x; int y; }; struct foo func() /* gibt eine Struktur vom Typ foo zurück */ { struct foo t = { 9, 99 }; return t; } int main() { struct foo f = func(); printf("x = %d; y = %d", f.x, f.y); /* x = 9, y = 99; */ return 0; }
Daneben: Welche Rückgabewerte sind eigentlich überhaupt möchlich, was kann ich zurückgeben?
Alles bis auf Arrays und Funktionen. (Du kannst aber Zeiger auf Arrays sowie Zeiger auf Funktionen zurückgeben :))
/edit: ...
Gruß Caipi
-
typedef??
-
--linuxuser-- schrieb:
typedef??
Was willst du uns damit sagen?
-
TactX schrieb:
--linuxuser-- schrieb:
typedef??
Was willst du uns damit sagen?
ob das mit einem typedef nicht schoener ginge?
-
Super!
Danke!
Klasse Beispiel!
zu typedef:
ginge natürlich auch, aber ursprüngliches Problem wurde sehr gut erklärt!
-
Hat das Beispiel oben nicht ein Problem? Was passiert mit der struct nach dem return? Wird der Speicher nicht wieder freigegeben? D.h., wenn zwischen dem Funktionsaufruf und dem Zuweisungsoperator irgendetwas anderes (paralleler Thread o.ä.) Speicher benutzt, wird dann der Inhalt der struct nicht überschrieben?
-
Nein, es wird ja eine Kopie des lokalen structs zurückgegeben und kein Zeiger.
-
--linuxuser-- schrieb:
TactX schrieb:
--linuxuser-- schrieb:
typedef??
Was willst du uns damit sagen?
ob das mit einem typedef nicht schoener ginge?
weder schöner noch unschöner, typdefed muss man dort einsetzen, wenn er Sinn macht. Mit typedef kannst du eigene Typen definieren, mehr nicht. Bei typdef struct sollte man ein bisschen vorsichtig sein, vor allem wenn der struct einen Zeiger von sich selbst hat, da können sehr schöne Warnungen kommen.