Hallo Daniel,
Natürlich kannst du komplett ohne Rückgabeparameter auskommen, genau dann,
wenn du TONNEN von Globalen Variablen anlegst. (In diesem Falle, brauchst du
natürlich auch keine Parameter.
Aber nehmen wir mal an, du hast einen Funktion, deren Rückgabewert du dir
nicht das ganze Programm über merken möchtest, in so einem Fall, fragst du
den Rückgabewert ab, reagierst entsprechend und vergisst ihn wieder.
Ferner lassen sich Rekursive funktionen nur schreiben, wenn man Parameter und
Rückgabewert benutzt. (Rekursion -> siehe Vollständige Induktion aus der
Mathematik)
Also, um genau zu sein:
Globale Variablen landen auf dem Programmheap,
Lokale Variablen, Parameter landen auf dem Stack
Parameter und lokale Variablen sind nach verlassen der Funktion meist nicht
mehr gültig (Ausnahmen sind von Pointern referenzierte Variablen oder aber
eben Referenzen, wenn man von C++ spricht)
Aber hier ein kleines Beispiel:
(Bitte beachten, dass int sehr schnell überläuft)
<<< snippit <<<
#include
snippit >>>
natürlich kannst du jetzt sagen: "Das kann ich aber iterativ viel schneller." Klar, aber das ist ein einfaches Beispiel. Denk dir einfach eine Funktion, die einen Weg durch ein Labyrinth berechnen soll. (Backtracking) Aehhh, ich glaub, das führt jetzt zu weit. Ich empfehle dir mal ein C/C++ Buch kaufen und zu lesen Mein ganz persönlicher Favorit ist: Knuth: The Art of Computer Programming Aber erstens ist der sehr teuer, zweitens nur in Englisch und drittens schwere Kost. Wenn du bisher BASIC Programmiert hast, wirst du die Notwendigkeit nicht so schnell einsehen. Als Tip: Schau dir mal JAVA an: Java kennt keine Globalen Variablen! Ach so, zum Rückgabewert: In C kommt dieser, sofern er passt in einem oder mehreren Prozessorregistern zurück. Das ist der Grund, warum du auch keine Strukturen als Rückgabeparameter nehmen kannst sondern nur Referenzen oder Pointer. Ich hoffe, du konntest damit jetzt was anfangen. - Arndt Am Sonntag, 22. Juni 2003 11:58 schrieb Daniel Feist:
Hallo, Ich habe eine Frage zu Funktionsdefinitionen in C: Die Syntax sieht ja so aus:
1. Rückgabetyp 2.Funktionsname(Parameter) { /* Anweiungsblock mit Anweiungen */ }
1.Also als Rückgabewert kann jeder beliebige Datentyp genommen werden
2.Der Funktionsname muss eindeutig sein, mit der man die Funktion von einem anderen Programmteil aus aufrufen kann.
Ich verstehe nicht, was man als Parameter angeben muss, und wozu man diese Parameter überhaupt braucht. Auch wie das mit dem Rückgabetyp so richtig funktioniert, weiß ich nicht.Ich würde mich über zahlreiche Beschreibungen freuen! Vielen Dank!
Gruss Daniel -- clusterix.perl@gmx.de