Zeiger als Referenz übergeben?



  • int *i = new int(5);
    
    func(i);
    
    void func(int i*){
    
    ....
    }
    

    Wie kann ich i-Zeiger als referenz in der funktion übergeben?



  • void func(int&* i)
    {
    
    }
    


  • ne das geht eben nich!!!!

    d:\Multithreading\multithread\multithread\multithread.h(29): error C2528: 'i' : pointer to reference is illegal



  • void func(int*& i)
    


  • ich habs:

    void func(int **i){
    
    ...
    }
    

    aufruf

    funk(&i);
    


  • Das ist bloß keine Referenz auf einen Pointer sonder ein Pointer auf einen Pointer. 🙂



  • ein Zeiger repräsentiert doch eine referenz auf etwas..



  • BorisDieKlinge schrieb:

    ...
    Wie kann ich i-Zeiger als referenz in der funktion übergeben?

    Hmmm,
    hast Du doch eigentlich schon selbst beschrieben:

    • "Zeiger auf Typ X" = "X*"
    • "Referenz auf Typ X" = "X&"
    • "Referenz auf (Zeiger auf Typ X)" = "X*&"

    BorisDieKlinge schrieb:

    ein Zeiger repräsentiert doch eine referenz auf etwas..

    Ich vermute, dass es Dir reicht, einen Pointer auf einen Pointer zu haben. Allerdings vermutet hier jeder erstmal, mit "Referenz" meinst Du das syntaktische Element "C++-Referenz" und nicht die umgangssprachliche Konnotation, unter die auch "Handle" oder "ID" oder "Name" oder "Primärschlüssel" oder ... fallen. 😉
    Beim "Pointer auf einen Pointer" musst DU halt bedenken, dass er "doppelt 0" sein kann:

    void f(int** i) {
       if(i = 0) throw KannIchNichtDereferenzieren();
       arbeiteMitPointer_auf_Pointer_auf_int(i);
       if(*i = 0) throw KannIchNichtDereferenzieren();
       arbeiteMitPointer_auf_int(*i);
       arbeiteMit_int(**i);
    }
    

    Mit einer "C++-Referenz" kann Dir Ersteres nicht passieren...

    Gruß,

    Simon2.



  • BorisDieKlinge schrieb:

    ein Zeiger repräsentiert doch eine referenz auf etwas..

    Nein. Zeiger und Referenz sind zwei Sprachkonstrucke von C++ die man zwar eine gewisse Ähnlichkeit haben, aber grundlegent unterschiedlich funktionieren.

    Ein Zeiger ist eine eigenständige Variable im Speicher deren Inhalt eine Speicheradresse ist.

    Eine Referenz ist ein alternativer Name für den gleichen Speicher den bereits eine andere Variable reserviert hat.


Anmelden zum Antworten