funktionen



  • hallo ihr lieben,
    ich versuche mich gerade an funktionen, und habe im netz dazu ein tutorium gefunden, leider klärt dass meine fragen nicht und nun hoffe ich das mir hier jemand helfen kann. ich bin für eine sehr einfache (so einfach wie möglich antwort dankbar). wo ist der unterschied zwischen den drei funktionen? warum return, beim anderen nicht, dafür void?

    float eingabeZahl() {
    	float eingabe;
    	printf("\nEingabe Zahl: ");
    	scanf("%f", &eingabe);
    	return eingabe;
    }
    
    float multipliziere(float zahl1, float zahl2) {
    	return (zahl1 * zahl2);
    }
    
    void ausgabeErgebnis(float ergebnis) {
    	printf("\nErgebnis: %f\n", ergebnis);
    

    danke für eure hilfe 👍



  • weil void der 0-Byte Datentyp ist.
    eine funktion die als rückgabetyp void hat gibt daher nichts zurück.

    du kannst allerdings die ausführung der funktion beenden in dem du während der abarbeitung der funktion return; schreibst.

    void f()
    {
    
        if(...)
        {
            ...
        }
        else
        {
            return;
        }
    
        ...
    
    }
    


  • stoeoe schrieb:

    wo ist der unterschied zwischen den drei funktionen? warum return, beim anderen nicht, dafür void?

    float eingabeZahl() {
    	float eingabe;
    	printf("\nEingabe Zahl: ");
    	scanf("%f", &eingabe);
    	return eingabe;
    

    return gibt dir den Wert der Variablen eingabe an das aufrufende Programm zurück. Dieser Wert ist vom Typ float. Ebenso beim Multiplizieren.
    Da deine Ausgabefunktion ein Ergebnis am Bildschirm ausgibt und sonst nichts
    weiter tut, muss auch kein Wert an die aufrufende Funktion zurückgegeben werden.
    Dazu dient void.



  • aber sie gibt doch das ergebnis zurück`!!?? 😕



  • besonders den unterschied zwischen 1 und drei verstehe ich nicht!



  • 3 gibt nichts zurück, der Funktion wird nur was übergeben.
    Bevor wir hier weiter irren, les dir das durch!
    http://de.wikibooks.org/wiki/C-Programmierung:_Funktionen



  • stoeoe schrieb:

    aber sie gibt doch das ergebnis zurück`!!?? 😕

    Sie gibt das Ergebnis nicht zurück. Sie sendet das Ergebnis an die Standardausgabe (der Konsole).

    Die Ausgabe in der Konsole ist keine Rückgabe, da du diese nicht mehr verwendest. Du kannst die Funktion natürlich umschreiben in:

    float ausgabeErgebnis(float ergebnis) {
        printf("\nErgebnis: %f\n", ergebnis);
        return ergebnis;
    

    Beim Funktionsaufruf sollte dir aber spätestens klar werden, daß das Sinnlos ist:

    funktionsrückgabe = ausgabeErgebnis(ergebnis)
    

    Hier ist der Rückgabewert gleich dem mitgesendeten Parameter, da er in der Funktion nicht verändert wird.



  • also heißt ergebnis zurückgeben immer eine zahl zurückgeben oder so, womit das programm dann weiterrechnet!??
    SAG JAAAAAAAAAAAAA! 😃 dann hab ich es endlich verstanden



  • Ja, und wie im anderen Thread geschrieben sind Parameter Werte die von dem Programm an die Funktion übergeben werden.



  • Simples Beispiel:

    //Funktion welche 2 integer addiert
    
    int Addiere(int a,int b){ //Hier steht nach aufruf a=6 und b=5 drin
     return a+b; //Werte werden addiert und Ergebnis zurückgegeben
    }
    
    int main(void){
    
      int Wert1=6;
      int Wert2=5;
      int Ergebnis=0;
    
      Ergebnis= Addiere(Wert1,Wert2); //Hier Funktion aufrufen.
    // Ergebnis erhält den zurückgegebn wert.
    
    return 0;
    }
    

Anmelden zum Antworten