Endereço de ponteiro estranho para membro de dados de estrutura individual

Eu observo algum comportamento estranho hoje, o código é o seguinte:

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

A questão :1.) A única questão que tenho é por quecout theAddress para o código acima sairia algum valor estranho?

2.) Por que eu ainda posso mudar o valor do membroc por dereferenncing o ponteiro que tem endereço estranho?

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion