Así que tengo la (muy simple) siguiente código:¿Qué se está imprimiendo? C++ puntero a un entero
int* pInt = new int(32);
std::cout<< pInt << std::endl; //statement A
std::cout<< *pInt << std::endl; //statement B
std::cout << &pInt << std::endl; //statement C
Así que esto es lo que que que estoy haciendo (He aprendido que en C++ estoy rara vez haciendo lo que pienso estoy haciendo):
- Creación de un puntero a un entero y decir que es medio litro
- statementA imprime la dirección del valor '32'
- statementB imprime el valor entero que mi puntero apunta hacia él (lo cual se hace porque desreferencia el puntero, lo que me da acceso a lo que apunta).
- instrucciónC imprime la dirección del puntero en sí (no la dirección del valor entero '32').
¿Es todo esto correcto?
Si la variable se define como int * Valor = 32; estarías en lo correcto Sin embargo, incluir la constante en el constructor lo convierte en un objeto. Si hiciste eso, entonces la variable se optimizaría a una const int *. – monksy
¿qué quieres decir con "lo convierte en un objeto"? –
Es una distinción muy sutil, pero para una comprensión completa es necesario señalarlo. Creo que la redacción correcta sería "2. statementA imprime la dirección de un' int' que contiene el valor '32' ". –