Also ich persönlich habe in einem C-Programm noch nie ein Goto benötigt...
Bei einem Goto springst du einfach nur irgendwo hin, musst aber nicht unbedingt wieder zurück kommen. Bei einer Funktion hingegen kannst du dir sicher sein, daß das Programm nach dem Funktionsaufruf fortgesetzt wird sobald die Funktion fertig ist.worin besteht der Unterschied, ob ich eine Funktion aufrufe oder per 'goto' zu einem Programmteil springe?
Funktionen bieten generell mehr Komfort und Übersichtlichkeit als direkte Sprünge zu irgendwelchen Programmteilen. So siehst du z.B. sofort ob der Funktion Parameter übergeben werden, und welche. Das gleiche gilt für den evtl. vorhandenen Rückgabewert.
nehmen wir z.B. mal eine Funktion namens "add" die 2 Zahlen addiert:
erg = add(1, 4);
und jetzt machen wir das nochmal mit Goto (in der schlimmsten möglichen Version):
a = 1;
b = 4;
goto add;
add_return: erg = c;
Bei der ersten Variante sieht jeder sofort, welche Parameter übergeben werden und daß das Ergebnis danach wohl in erg steht. Bei der zweiten hingegen muss man sich schlimmstenfalls erstmal durch den gesamten Code wühlen um herauszufinden daß in den (globalen) Variablen a und b die Parameter, und in c das Ergebnis stehen. Außerdem kann man die goto-Variante nur an einer einzigen Stelle im Programmcode benutzen, die Funktion aber beliebig oft (sogar verschachtelt).
Ich würde Goto nur dann verwenden wenn ein Sprung ohne Rückkehr explizit gewünscht ist. Das kann z.B. der Fall sein wenn man nach einem schwerwiegenden Fehler in eine Fehlerbehandlungsroutine springen möchte. (die dann z.B. einen Reset auslöst oder ähnliches)
Lesezeichen