Parameter definieren



  • Hallo zusammen,

    ich würde gerne wissen, wie man es schafft, ein nicht global definierten Wert aus einer Funktion zu definieren, sodass er auch in anderen Funktionen aufgerufen werden kann.

    Beispiel:

    In der Funktion1 wird ein werd abgefragt:

    int zeilenabfrage(int zeilen){
    
    cout << "Anzahl der Zeilen? :";
    cin >> zeilen;
    
    return 0;
    }
    

    Jetzt möchte ich genau diesen Wert der Zeilen in einer zweiten Funktion nutzen. Auch im Hauptprogramm main() soll diese abrufbar sein und zwar nicht nur mit der Wertzuweisung:

    zeilenabfrage();
    

    sondern auch mit einer ganz normalen Ausgabe wie

    cout << zeilen;
    

    Ich hoffe ich konnte mein Problem einigermaßen erkenntkich darstellen.

    Danke schonmal im voraus für eure Hilfe.

    Lg



  • 1. Variante:

    #include <iostream>
    
    int zeilenabfrage()
    {
      std::cout << "Anzahl der Zeilen? :";
      auto zeilen = 0;
      std::cin >> zeilen;
      return zeilen;
    }
    
    int main()
    {
      auto zeilen = zeilenabfrage();
      std::cout << "Anzahl der Zeilen ist " << zeilen << "\n";
    }
    

    Das hat so den Nachteil, dass ein Fehler beim Einlesen nicht bemerkt wird. Man könnte ein allfälliger Fehler beim Einlesen auf verschiedene Arten signalisieren, über einen erweiterten Rückgabewert oder indem eine Ausnahme geworfen wird.

    2. Variante:

    #include <iostream>
    
    void zeilenabfrage(int& zeilen)
    {
      std::cout << "Anzahl der Zeilen? :";
      std::cin >> zeilen;
    }
    
    int main()
    {
      auto zeilen = 0;
      zeilenabfrage(zeilen);
      std::cout << "Anzahl der Zeilen ist " << zeilen << "\n";
    }
    

    Hier könntest du für zeilenabfrage(..) auch einen Wert zurückgeben, der ein Fehler anzeigt (z. B. true / false ).



  • Hallo,

    dafür gibt es mehrere Möglichkeiten. Die einfachste wäre, die Funktion Zeilenabfrage aus der main aufzurufen und auf einer lokalen Variable in main zu hinterlegen.

    Ein Beispiel dafür findest du hier: IDEONE


Log in to reply