Seltsame Zeigeradresse für ein einzelnes Strukturdatenelement

Ich beobachte heute ein seltsames Verhalten. Der Code lautet wie folgt:

Der Code :

#include <iostream>

struct text
{
    char c;
};

int main(void)
{
    text experim = {'b'};
    char * Cptr = &(experim.c);

    std::cout << "The Value \t: " << *Cptr << std::endl ;
    std::cout << "The Address \t: " << Cptr << std::endl  ; //Print weird stuff

    std::cout << "\n\n";

    *Cptr = 'z';   //Attempt to change the value

    std::cout << "The New Value \t: " << *Cptr <<std::endl ;
    std::cout << "The Address \t: " << Cptr << std::endl ; //Weird address again

    return 0;
}

Die Frage :1.) Die einzige Frage die ich habe ist warumcout theAddress für den obigen Code würde ein komischer Wert herauskommen?

2.) Warum kann ich den Wert des Mitglieds noch ändern?c durch den Zeiger dereferenncing die seltsame Adresse hat?

Vielen Dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage