Ausgeben eines volatile int *



  • Muss vorausschicken: ich kenn mich mit C++ nicht gut aus. Ich frag mich aber gerade, wie man einen volatile-Zeiger ausgibt. Ich hatte nie Probleme mit Zeiger-Ausgaben, ich hab's immer so gemacht (oder gleich mit printf):

    int i = 42;
    int * p = &i;
    
    cout << p;   // gibt zB aus: 0xbfbceaf0
    

    Das gibt mir immer brav die Adresse aus. Aber wenn ich p volatile mache, bekomme ich als Ausgabe immer 1 (ja, eins), egal wo i auch sein möge:

    int i = 42;
    volatile int * p = &i;
    
    cout << p;   // gibt immer aus: 1
    

    😕
    Warum nur 1? Das glaubt doch keiner. Oder hab ich da was falsch gemacht?



  • cout << boolalpha << p;   // gibt immer aus: true
    


  • Für Zeiger auf volatile-qualifizierte Typen gibts keinen überladenen Ausgabeoperator, also wird sinnigerweise (?) der für bool verwendet.
    Man könnte aber den volatile-Qualifier wegcasten:

    cout << const_cast<int*>(p);
    


  • Edit: Nichts, sorry.


Log in to reply