Referenzen



  • naja, korrekt übersetzt heisst Pointer tatsächlich Zeiger.. 🙄



  • @randa

    int var=0;
    int *p=&var;	//Pointer
    int &r=var;	//Referenz
    
    p=6;	//Fehler: müsste *p=6 sein
    r=6;	//entspricht *p=6;<--das stimmt nicht r=6<=>var=6,es findet keine dereferenzierung statt
    

    @Dai
    hier etwas einfacher(einfach mal compilieren, dann wirds klar):

    #include <iostream>
    using namespace std;
    int main(){
        int a=0;
        int& ra=a;
        ra=6;
        cout<<a<<endl<<ra;
    }
    


  • LEUTE !!!!!! AHHHHH fangt nicht mit Dereferenzierung an bevor ich nichtmal Referenzieren ? *g* kann 🙂

    Step by Step und easy bitte



  • das @randa sollte eigentlich aussagen, dass dies nich direkt auf dich bezogen war 🙂



  • @ otze: stimmt. Ich habs bewusst so erklärt, das es im Vergleich mit dem Pointer klar wird. Es wäre die äquivalente Syntax.

    Ich hab weiter oben noch per Edit einen Erklärungsversuch gemacht.



  • Dai schrieb:

    LEUTE !!!!!! AHHHHH fangt nicht mit Dereferenzierung an bevor ich nichtmal Referenzieren ? *g* kann 🙂

    Step by Step und easy bitte

    Lass es lieber bleiben und lern HTML oder VB...



  • So ein dummes Geschwätz lern du dich lieber in Sozialkompetenz bezogen auf den Post über mir

    @Randa ok habs verstanden das Beispiel aber für was brauch ich sowas z.B.?

    Wenn ich das nun richtig deute, verändert sich in deinem Beispiel das a mit obwohl ich ra ändere nur was bringt mir sowas ?



  • hier bringts dir was(btw ich bin nicht randa^^):

    #include<iostream>
    using namespace std;
    void function(int& Object){
        Object=5;
    }
    int main(){
    int a;
    function(a);
    cout<<a;
    }
    

    is zwar ein super primitives beispiel,aber das prinzip sollte klar sein(ich hoffe, du kennst schon funktionen :P)

    //edit erklärung:
    wenn function(a) aufgerufen wird, wird innerhalb der funktion(wie in meinem ersten punkt schon erwähnt) nur ein alias-name für a genommen, alle veränderung die function also mit Object macht, werden direkt auf a übertragen(wenn ich aber innerhalb der funktion aus int& einfach int mache, passiert garnichts)



  • Sagt mal Leute ohne jetzt beleidigend zu wirken. Denkt ihr ich wäre blöd nur weil ich euch jetzt was frage ???

    Ich sehe absolut keinen Sinn sich über Leute lustig zu machen die versuchen gerade etwas zu verstehen. Schlimmer ist eher wenn man sich darüber lustig macht denn jeder von euch musste es auch mal lernen.

    Wenn das hier so ein "Jugend" Forum ist sagts mir dann bin ich hier eh falsch

    Zum Thema Funktionen: Ja kann ich aber wie oben erwähnt kein Grund nen 🙂 dahinter zu machen



  • Danke für dein Beispiel otze



  • Ein Versuch meinerseits:

    void funcref(int& x) 
    {
    	x++;
    }
    
    void funcval(int x)
    {
    	x++;
    }
    
    int main()
    {
    	int a = 1;
    	funcref(a);
    	// nach dem Funktionsaufruf ist a = 2, weil mit dem Original gearbeitet wurde.
    	cout << a << endl;
    
    	int b = 1;
    	funcval(b);
    	// nach dem Funktionsaufruf ist b = 1, weil nur mit einer Kopie gearbeitet wurde
    	cout << b << endl;
    
    	return 0;
    }
    

    mfg JJ



  • Vielen Dank auch an dich John



  • //edit sorry, hab deine aussage auf mich bezogen,dickes sorry.



  • Wofür man das braucht ist eine ganz typische Frage und tatsächlich ist die Antwort: Als Anfänger braucht man das (meistens) noch nicht. Das kommt automatisch erst später. Bei mir war das damals so dass ich das automatisch gechekt hab sobald ichs gebraucht hab.
    Wie otze oben gezeigt hat ist es eine typische Anwendungsmöglichkeit von Zeigern, dass sie als Argumente von Funktionen verwendet werden, um diesen in der Funktion zu verändern. Wenn du eine normale Variable als Argument hättest, würde nur eine Kopie verwendet werden und die Originale Variable ändert sich nicht.
    Benutz aber wie oben otze in einem solchen Fall für den Anfang nur Referenzen.

    oh, was ich erklärt hab hat schon jemand gepostet.
    Muss mich mal in Zehnfingerschreiben üben dann bin ich auch mal der erste 😉



  • Ja kein Thema aber wo ich oben diesen Klug schon wieder gelesen hab da ging mir schon wieder der Kragen hoch. Ich mags einfach überhaupt nicht wenn man Fragende auslacht oder blöd anmacht.

    Ausserdem erwähnte ich ja schon,(obwohl ich schon fast 1 Jahr C++ Programmiere) dass ich immer noch Anfänger bin und ich kann nichts dafür das wir das erst jetzt durchnehmen, dass liegt ja am Dozent 🙂

    Danke an alle



  • *g* in einem Jahr kannst du viiiiel mehr lernen wenn du es selbstständig machst anstatt nach dem Tempo deines Dozenten zu gehen. Pack dir ein buch, lies und in ein paar monaten hast du auch komplexere Zusammenhänge verstanden.
    Nur so als lerntip.



  • Yo hab ich letztens auch gemerkt, so werd ichs nun auch machen.


Anmelden zum Antworten