char y char * (puntero)
Me gustaría entender cómo funcionan los punteros, así que creé este pequeño programa. En primer lugar, creo un puntero p, que apunta a un carácter.
La primera pregunta es en este punto. Si creo un puntero, su valor es una dirección de memoria (si lo apunto a un objeto que no es puntero), pero esta vez es "jaja" en mi ejemplo. ¿Por qué funciona de esta manera en char *? ¿Y cómo puedo agregarle valor con cin >> p?
Mi segunda pregunta es que creé un carácter q, que tiene el valor del puntero * p en el punto en que lo creé. PERO su valor y dirección son "h" también, pero ¿por qué? ¡Debe ser la dirección de memoria de este objeto char! No tiene sentido: 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;
}
MÁS: si asigno memoria primero con char a [100]; char * p = a; entonces & q = h »ŢĹ, así que" h "y algo de desorden. ¡Pero debería ser una dirección de memoria! y mi pregunta es, ¿por qué no se trata entonces?