Dziwny adres wskaźnika dla pojedynczego członka danych strukturalnych

Obserwuję dzisiaj dziwne zachowanie, kod jest następujący:

Kod :

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

Pytanie :1.) Jedyne pytanie, jakie mam, to dlaczegocout theAddress&nbsp;dla powyższego kodu wyjdzie dziwna wartość?

2.) Dlaczego wciąż mogę zmienić wartość członkac&nbsp;przez odwołanie się do wskaźnika, który ma dziwny adres?

Dziękuję Ci.