Punteros
Completion requirements
6. Operadores Nuevos
En esta sección veremos 2 nuevos operadores:
-
Operador de Indirección: * (asterisco)
- Este operador aplicado sobre una variable, indica que esta variable almacena una DIRECCIÓN de memoria.
- Notar que una dirección de memoria no tiene tipo en si mismo, pero apunta a un datos que SI tiene tipo.
- float *p,a=3;//el puntero p apuntará en el futuro a una varaible real
-
Operador de Dirección: & (ampersand)
- Este operador aplicado sobre una variable regresa o "saca" la dirección de la variable.
- float *p,a=3;
- p=&a //"saco" la dirección de a y la guardo en una variable puntero.
-
Operador new
-
El operador new sirve para reservar memoria dinámica, esto es durante la ejecución del programa.
-
El operador new retorna una dirección de memoria que es la memoria reservada.
-
Si la reserva de memoria no tuvo éxito, new devuelve un puntero nulo,
- Se pueden solicitar VARIOS espacios de memoria utilizando la sintaxis:
Nombre_de_puntero = new type //para un solo espacio
Nombre_de_puntero = new type [N] // para N espacios
- Ejemplos de sintaxis:
int *p; //Declaro puntero a un entero
float *x; //Declaro puntero a un real
char *text; //Declaro puntero a un char
p=new int[4];// reserva 4 espacios para enteros de manera contigua.
x=new float[4];// reserva 4 espacios para reales de manera contigua.
text=new char[11];// reserva 11 espacios para caracteres de manera contigua.
Operador Delete: del
- En la mayoría de los casos, la memoria asignada dinámicamente (con new) solo es necesaria durante períodos específicos de tiempo dentro de un programa; una vez que ya no se necesita, se debe liberar para que la memoria vuelva a estar disponible para otras solicitudes de memoria dinámica.
- Sintaxis es:
-
delete pointer;// para borrar UN solo puntero delete[] pointer;// para borrar arreglo de punteros
Aclaración
si se solicitó memoria como arreglo con new[ ] la misma no se puede liberar de a una posición con delete, se debe liberar el conjunto completo con delete[ ].
https://stackoverflow.com/questions/18016295/deleting-elements-of-a-dynamic-array-one-by-one