wenn ich int den prototyp
deklariere was macht es für einen unterschied wenn man left und right in der kalmmer deklatiert?
Dein Compiler unterscheidet Funktionen anhand des Namens und der zu übergebenden Parameter.
Du kannst zwei Funktionen "add" haben, solange die Parameter sich unterscheiden:
Code: Alles auswählen
int add(int left, int right); //add(int, int)
int add(float left, float right);//Das ist ok
int add(int right, int left); //das ist nicht oK wegen add(int, int)
Wichtig in diesem Kontext zu erwähnen ist wie dein Compiler eine Funktion handhabt. Zur Identifikation, welche Funktion zu nutzen ist wird nur der Name der Funktion sowie die Reinfolge und typen der Parameter. Dein
ist für die Identifikation nur ein
Eine Funktion "add", die zwei ints als Parameter haben will. Und mehr muss man als Deklaration z.B in einem Header nicht schreiben um bekannt zu geben, dass es eine Funktion "add" gibt, die zwei ints als Parameter benötigt.
Für die Implementation wird dann wieder auf die Variablennamen zurück gegriffen.
Die Parameter in den Klammern sind dafür gedacht, dass sie beim Aufruf der Funktion vom Aufrufer übergeben werden müssen:
Die lokalen Parameter sind wie der Name schon sagt lokal. Der Aufrufer kann und muss sie dir nicht übergeben, was sollte deine Funktion "add" in diesem Fall machen?
Weiterhin solltest du dir auch mal über das Konzept "Funktion" Gedanken machen. Was du egt versuchst ist ein in sich geschlossenen Block zu bauen, der
nur von den Variablen abhängt, die du als Parameter übergibst.
Wenn du globale Variablen nutzt, um das Ergebnis einer Funktion zu beeinflussen bedeutet das für dich, dass du vor dem Aufruf der Funktion sicherstellen musst, dass diese Variablen sinnvolle Werte beinhalten.