vallenato trap tag songs smart sirve que punteros programas programar preguntas para mexico libros lenguaje las inteligentes funciones entre ejemplos diferencia como codigos codigo coche challenge carro caracteristicas canciones aprender c++ c++11 pointers auto

c++ - songs - tag del trap



¿Cuál es la diferencia entre `auto pp` y` auto*ppp`? (2)

En el ejemplo particular que muestra, no hay diferencia. Pero imagina que luego agregarías dos calificativos const como el siguiente:

const auto pp = p; const auto *ppp = p;

¿Sigue siendo el mismo? Resulta que esto es idéntico a

int * const pp = p; // pointer is readonly const int *ppp = p; // pointer is readonly

porque en auto pp = p , auto coincide con int* como un todo, y const modifica lo que está a su izquierda (o lo que está a su derecha, si no hay nada a su izquierda). Al contrario, en auto *ppp = p , auto coincide con int , y esto es a lo que se aplica const .

Debido a esta notable diferencia y porque deberíamos usar las variables const siempre que sea posible, le aconsejaría que siempre use auto* cuando use la deducción de tipo para las variables de puntero. No hay forma de constar-calificar el puntero en lugar del pointee, y si quiere constar-calificar ambos, esto es posible por

const auto * const pppp = p;

que no funciona sin el * .

int foo = 11; int *p = &foo; auto pp = p; auto *ppp = p; cout << pp << endl; cout << ppp << endl;

Este programa producirá la misma salida para pp y ppp , pero ¿por qué? auto deduce que la variable debe ser int , por lo que creo que la declaración de ppp es correcta. Pero pp y ppp tienen el mismo valor ...

Salida:

0x61fefc 0x61fefc


No hay diferencia entre auto y auto * en este caso particular. En el caso de auto pp = p; el tipo se deducirá a int * mientras que en el caso de auto *ppp = p; tipo se deducirá a int .

calificador auto :

Para las variables, especifica que el tipo de la variable que se está declarando se deducirá automáticamente de su inicializador. [...]

Tenga en cuenta que a diferencia de auto el auto * solo deducirá los tipos de puntero.