char e char * (ponteiro)
Eu gostaria de entender como os ponteiros funcionam, então eu criei este pequeno programa. Primeiro de tudo eu crio um ponteiro p, que aponta para um char.
A primeira questão é neste momento. Se eu criar um ponteiro, o valor dele é um memoryaddress (se eu apontá-lo para um objeto não ponteiro), mas desta vez é "haha" no meu exemplo. Por que isso funciona dessa maneira em char *? E como eu posso agregar valor a ele com cin >> p?
Minha segunda pergunta é que, eu criei um q char, que tem o valor do ponteiro * p no ponto em que o criei. MAS seu valor e endereço são "h" também, mas por quê? Deve ser o endereço de memória deste objeto char! É inútil: D (mingw - gcc)
#include <iostream>
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;
}
MAIS: Se eu alocar memória primeiro com char a [100]; char * p = a; então & q = h »ŢĹ, então" h "e alguma bagunça. mas deve ser um endereço de memória! e minha pergunta é, por que não é endereço então?