символ и символ * (указатель)

Я хотел бы понять, как работают указатели, поэтому я создал эту небольшую программу. Прежде всего я создаю указатель p, который указывает на символ.

Первый вопрос на данный момент. Если я создаю указатель, его значение является адресом памяти (если я указываю на объект без указателя), но на этот раз это так "ха-ха» в моем примере. Почему это работает в char *? И как я могу повысить ценность этого с CIN >> п?

Мой второй вопрос заключается в том, что я создал символ q, который имеет значение указателя * p в том месте, где я его создал. НО его значение и адрес "ч" тоже, но почему? Это должен быть адрес памяти этого объекта char! Это'S бессмысленно: D (MINGW - GCC)

#include 

int main() 
{
 /* char *p;
    cin >> p;                      //forexample: haha */

    char * p = "haha";
    char q = *p;
    std::cout < "&q = " < &q < std::endl;   //&q = h
    std::cout < "q  = " <  q < std::endl;   //q = h

    return 0;
}

Ответы на вопрос(5)

Ваш ответ на вопрос