Konstante Pointer...



  • Hi!
    Also, ich hab gelesen, dass es bei Pointer drei Möglichkeiten gibt, diese mit dem Schlüsselwort const zu deklarieren:

    const int *variable; 
    int* const variable; 
    const int* const variable;
    

    Mir ist zwar klar, das sich das Schlüsselwort const hier einmal auf die Pointervariable selbst, und einmal auf die referenzierte Variable bezieht, aber ganz hab ich das noch immer noch nicht begriffen. Vielleicht könnte mir das jemand noch etwas genauer erklären...

    greetz, phreaking



  • Hallo,
    lies es von rechts nach links und setze für * Zeiger und danach ein "auf".

    ->

    const int *variable;         // variable ist ein Zeiger auf int const
    int* const variable;         // variable ist ein const Zeiger auf int
    const int* const variable;   // variable ist ein const Zeiger auf int const 
    
    int const * variable;        // variable ist ein Zeiger auf const int
    int const * const variable;  // variable ist ein const Zeiger auf const int
    


  • Nur nochmal zum verdeutlichen (wobei die Erklärung von Hume ja eigentlich schon gut is): const bezieht sich IMMER auf das, was links davon steht! Von daher ist const int* eigentlich Müll - ist zwar erlaubt, aber zum Verständnis ist int const * besser:

    int const * a;       // a ist ein Zeiger auf ein konstantes int
    int * const a;       // a ist ein konstanter Zeiger auf ein int
    int const * const a; // a ist ein konstanter Zeiger auf ein konstantes int
    

    Nur wenn links vom Schlüsselwort const nichts / eine öffnende Klammer ist, bezieht es sich auf das, was rechts davon steht.

    [ Dieser Beitrag wurde am 04.05.2002 um 21:24 Uhr von SG1 editiert. ]



  • das hatten wir doch schonmal.. wie wärs mal ins faq??

    oder isses da schon...

    🙂



  • @SG1
    Also entweder bin ich schon wieder besoffen, oder in deinen ersten beiden Beispielen ist der Wurm drin. Die Kommentare sind genau entgegengesetzt zu deiner Erklärung.



  • ne, muss ich wohl besoffen gewesen sein... *editier*