Dirección de puntero extraño para miembro de datos de Struct individual

Observo algún comportamiento extraño hoy, el código es el siguiente:

El código :

#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;
}

La pregunta :1.) La única pregunta que tengo es por quécout theAddress ¿Por el código anterior saldría algún valor extraño?

2.) ¿Por qué todavía puedo cambiar el valor del miembro?c ¿Dereferenncing el puntero que tiene dirección extraña?

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta