Wie kann ich Variablen auch in einer Funktion ausgeben



  • Ich habe im Hauptprogramm ein par Variablen definiert und will diese jezt auch in einer Funktion aufrufen. Wie stelle ich das an?



  • Man kann Variablen nicht aufrufen. Man kann Ihnen nur Werte zuweisen bzw. Werte entnehmen.
    Wenn Du Zugriff auf die Variable innerhalb einer Funktion haben willst, musst Du entweder eine Referenz oder die Adresse der Variable übergeben:

    void eineFunktion(int& a) //Referenzoperator & bachten
    {
        a = 10;
    }
    
    int var = 4711; //var = 4711
    eineFunktion(var); //hier wird var ueber die Funktion geaendert
    //var ist jetzt 10
    

    oder:

    void eineFunktion(int* a) //Pointer auf int
    {
        *a = 10; //pointer dereferenzieren und zuweisen
    }
    
    int var = 4711; //var = 4711
    eineFunktion(&var); //hier wird var ueber die Funktion geaendert
    //var ist jetzt 10
    


  • Tschonni schrieb:

    Ich habe im Hauptprogramm ein par Variablen definiert und will diese jezt auch in einer Funktion aufrufen. Wie stelle ich das an?

    man kann variablen nicht in der regel nicht "aufrufen", weder innerhalb noch außerhalb von funktionen. kannst du die frage anders formulieren oder mit ein bisschen code zeigen was du willst?



  • Hier ist der Qulltext:

    void Funktion ();
    
    int main ()
    {
    int Variable;//Hier wird die Varible deklariert
    
    std::cin >>Variable;//Hier wird die Variablel definiert
    
    Funktion ();//Hier wird die Funktion aufgerufen
    
    return 0;
    }
    
    void Funktion ()
    {
    std::cout <<Variable; //In der Funktion soll die Variable angezeigt werden
    
    }
    


  • Tachyon hat dir schon eine Lösung präsentiert (by-reference). Du willst bislang scheinbar nur den Wert der Variable ausgeben, da reicht es, diesen by-value zu übergeben (Google is your friend! 😉 ).



  • danke



  • Tschonni schrieb:

    std::cin >>Variable;//Hier wird die Variablel definiert
    

    Nein. Definiert wird die Variable bei ihrer Deklaration (Definition = Speicherbereitstellung). Hier wird ihr ein Wert zugewiesen.

    Wenn du die Variable in einer Funktion nur ausgeben willst, brauchst du weder Referenzen noch Zeiger.

    void Function(int Var)
    {
        std::cout << Var << std::endl;
    }
    

    Ich würde an deiner Stelle unbedingt ein Buch oder Tutorial zur Einführung in C++ lesen, da werden auch grundlegende Dinge wie Funktionen erklärt.



  • Tachyon schrieb:

    Man kann Variablen nicht aufrufen.

    man kann variablen nicht in der regel nicht "aufrufen", weder innerhalb noch außerhalb von funktionen.

    Achja? Habe ich etwas verpasst?

    struct call_me
    {
    	void operator () ()
    	{
    		std::cout << "ich wurde aufgerufen!" << std::endl;
    	}
    };
    
    int main ()
    {	
    	call_me me;
    	me ();
    }
    

    Und das ist eine durchaus übliches Konstrukt..



  • drakon schrieb:

    man kann variablen nicht in der regel nicht "aufrufen"

    Achja? Habe ich etwas verpasst?

    wohlweislich habe ich den hervorgehobenen teil geschrieben, um klugscheißerei wie deiner zuvorzukommen. hat leider nicht gereicht.
    function pointer gibts übrigens auch noch.



  • call me schrieb:

    drakon schrieb:

    man kann variablen nicht in der regel nicht "aufrufen"

    Achja? Habe ich etwas verpasst?

    wohlweislich habe ich den hervorgehobenen teil geschrieben, um klugscheißerei wie deiner zuvorzukommen. hat leider nicht gereicht.
    function pointer gibts übrigens auch noch.

    Bei deinen Satzkonstruktionen ("nicht in der Regel nicht"? Satzzeichen?) kannst du froh sein, wenn überhaupt jemand ansatzweise versteht, wie du das meinst. Gerade der zweite, hier nicht zitierte Teil deines Satzes impliziert eigentlich, dass du sagen wolltest, was drakon verstanden hat...



  • _matze schrieb:

    Bei deinen Satzkonstruktionen ("nicht in der Regel nicht"? Satzzeichen?) kannst du froh sein, wenn überhaupt jemand ansatzweise versteht, wie du das meinst.

    ach komm, da ist ein "nicht" zu viel reingerutscht, nichts weiter. und was du noch mehr an satzzeichen willst, ist mir unklar. wenn du dich kurz umschaust, findest du bestimmt einen legastheniker, dem du ans bein pissen kannst.

    Gerade der zweite, hier nicht zitierte Teil deines Satzes impliziert eigentlich, dass du sagen wolltest, was drakon verstanden hat...

    da steht "in der regel nicht", und ich habe es genau deshalb geschrieben, weil es eben ausnahmen von der regel gibt. das kann man schon verstehen, wenn man nicht gerade stänkern will.



  • außerdem, wenn man es mal ganz genau nimmt: bloß weil die syntax zufällig mit einem funktionsaufruf identisch ist, wird ja nicht die variable aufgerufen, sondern immer noch die funktion. genau wie beim funktionszeiger nicht der zeiger aufgerufen wird, sondern die funktion, auf die er zeigt.



  • call me schrieb:

    drakon schrieb:

    man kann variablen nicht in der regel nicht "aufrufen"

    Achja? Habe ich etwas verpasst?

    wohlweislich habe ich den hervorgehobenen teil geschrieben, um klugscheißerei wie deiner zuvorzukommen. hat leider nicht gereicht.
    function pointer gibts übrigens auch noch.

    Ich wollte niemanden beleidigen und habe dein "in der regel" schon wahrgenommen und mir ist auch bewusst, dass Tachyon der Existenz von Funktoren bewusst ist, allerdings wollte ich einfach darauf hinweisen, dass es durchaus möglich ist eine Variable "aufzurufen".

    EDIT:
    Klar wird eine Funktion aufgerufen. Das ist bei einer Funktion ja aber auch nicht anderst.. Schlussendlich ist ja auch eine Memberfunktion dasselbe, wie eine Funktion, ausser, dass noch der this Zeiger implizit mitgegeben wird. (Und es wäre sogar erlaubt auch das wegzulassen, sofern keine Variablen in der Klasse vorhanden sind.. )



  • drakon schrieb:

    Ich wollte niemanden beleidigen

    ich wurde nicht beleidigt und hatte auch nicht vor, dich zu beleidigen. zugegeben, ein smiley bei "klugscheißerei" hätte vielleicht nicht geschadet.


Anmelden zum Antworten