Funktion mit default Paramtern



  • hallo, 😉

    Habe eine Funktion die mehrmals verwendet wird, ich sie aber in einer Form brauche wo ich ihr einen Funktionsparamter mehr übergebe. Geht das irgendwie ?

    #include <stdio.h>
    #include <stdlib.h>
    
    // diese Funktion mit optionalen Paramtern erweitern
    int func(int a, int b)
    {
    	return a+b; 
    }
    
    // Habe mir soerwas vorgestellt
    int func1(int a,int b,int c = 0) 
    {
    	return (a+b+c);
    }
    
    // Hier soll kein Fehler geworfen. Egal ob man 2 oder 3 Parameter mitgibt. 
    int main(void) {
    	int a = func1(12,5); // 1.)Irgendwie möglich ?
    	a = func1(12,5,3); //   2.)Irgendwie möglich ?
    	return EXIT_SUCCESS;
    }
    


  • Das geht nicht mit C. Dafür brauchst Du C++ (bzw. einen C++ - Compiler).


  • Mod

    Das geht in C nicht (aber in anderen Sprachen, wie z.B. C++, durchaus). Du wirst dich mit einer der folgenden Möglichkeiten begnügen müssen (was genau passt, hängt davon ab, was du genau vor hast):

    • Zwei verschiedene Funktionen mit unterschiedlichem Namen. Die eine Funktion kann evtl. die andere aufrufen:
    int add3(int a, int b, int c) { return a+b+c;}
    
    int add2(int a, int b) { return add3(a,b,0); }
    
    • Eine Funktion mit beliebig vielen Parametern via Ellipse a la printf. Ein nicht gegebenes Argument wird dann eben als Defaultargument betrachtet
    • Eine Funktion mit beliebig vielen Parametern, aber ohne Ellipse, a la qsort. Das sind zwar nicht im direkten Sinne beliebig viele Funktionsparameter, aber durch die Angabe von Anfang und Anzahl, kann die Funktion auf einem beliebig großen Satz von Daten arbeiten.
    • Ein kompliziertes Gefrickel mit void*, welches im Prinzip da drauf hinaus liefe, sich seine eigene Ellipse nach zu programmieren.

Anmelden zum Antworten