Hallo,
ich versuche mich gerade an einer Funktion mit Parameterübergabe.
Der 3. Parameter soll optional sein, und die Funktion soll abfragen, ob ein Wert vorhanden ist oder nicht.
funktion(int wert1, int wert2, int wert3)
Also diese Situation: funktion(234, 432, ) ... (an der 3 Stelle steht nichts)
Das hast Du schon oft verwendet.
zB
Serial.print(Variable);
Serila.print(Variable, BIN);
Du schreibst 2 Funktionen mit dem gleichen Namen aber verschiedener Parameteranzahl.
Bei Aufruf der Funktion wird automatisch die verwendet, die den Parametern des Ausrufs entspricht.
Oder was ich nicht wußte :
funktion(int wert1, int wert2, int wert3=-1)
Du gibst dem optionalen Parameter einen Wert in diesem Fall -1 da das in C der Wert für einen Fehler ist. Du kannst einfach unterscheiden ob kein Parameter übergenben wurde (Wert ist -1) oder einer übergeben wurde dann ist der Wert verschieden von -1.
Genaugenommen kannst du natürlich auch funktion (a, b, -1) aufrufen. Das kann die Funktion nicht von funktion (a, b) unterscheiden. Wenn es darauf ankommt (ankäme), geht das nur ohne default-Wert, aber mit den zwei Varianten mit demselben Namen.
buddhafragt:
ich versuche mich gerade an einer Funktion mit Parameterübergabe.
Der 3. Parameter soll optional sein, und die Funktion soll abfragen, ob ein Wert vorhanden ist oder nicht.
...
Wie schon gesagt wurde: Das nennt man das Überladen einer Funktion.
Ein Compiler unterscheidet Funktionen anhand deren Signaturen.
void funktion(char a, char b) {...}
und
void funktion(char x, char y, char z) {...}
sind für den Compiler unterschiedliche Funktionen. Du kannst einfach zwei Funktionen schreiben, die gleich heißen, aber unterschiedlich viele Parameter entgegennehmen. Oder Du schreibst
void funktion(char n, char o, char p=5) {...}
dann hat die Funktion einen optionalen dritten Parameter, der auf 5 gesetzt wird, falls beim Aufruf nicht angegeben.