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 dla powyższego kodu wyjdzie dziwna wartość?

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

Dziękuję Ci.

questionAnswers(2)

yourAnswerToTheQuestion