Los punteros almacenan la dirección de las variables o una ubicación de memoria. Sintaxis:
datatype *var_name;
Ejemplo: el puntero «ptr» contiene la dirección de una variable entera o contiene la dirección de la memoria a cuyos valores se puede acceder como valores enteros a través de «ptr»
int *ptr;
Características de los punteros:
- Los punteros ahorran espacio en la memoria.
- El tiempo de ejecución con punteros es más rápido porque los datos se manipulan con la dirección, es decir, acceso directo a la ubicación de la memoria.
- Se accede a la memoria de manera eficiente con los punteros. El puntero también asigna y libera la memoria. Por lo tanto, se puede decir que la memoria de los punteros se asigna dinámicamente.
- Los punteros se utilizan con estructuras de datos. Son útiles para representar arrays bidimensionales y multidimensionales.
- Se puede acceder a una array, de cualquier tipo, con la ayuda de punteros, sin considerar su rango de subíndice.
- Los punteros se utilizan para el manejo de archivos.
- Los punteros se utilizan para asignar memoria dinámicamente.
- En C++, un puntero declarado a una clase base podría acceder al objeto de una clase derivada. Sin embargo, un puntero a una clase derivada no puede acceder al objeto de una clase base.
Usos de los punteros:
- Para pasar argumentos por referencia
- Para acceder a los elementos de la array
- Para devolver varios valores
- Asignación de memoria dinámica
- Para implementar estructuras de datos.
- Para hacer programación a nivel de sistema donde las direcciones de memoria son útiles
Inconvenientes de los punteros:
- Si los punteros apuntan a una ubicación incorrecta, es posible que termine leyendo un valor incorrecto.
- Una entrada errónea siempre conduce a una salida errónea
- La falla de segmentación puede ocurrir debido a un puntero no inicializado.
- Los punteros son más lentos que la variable normal
- Requiere un paso adicional de desreferencias
- Si olvidamos desasignar una memoria, se producirá una fuga de memoria.