Punteros en c++
Introducción
Un puntero es una variable que contiene la dirección de memoria de otra variable. Los punteros permiten código más compacto y eficiente;utilizándolos en forma ordenada dan gran flexibilidad a la programación. La dirección de memoria de una variable se obtiene con el operador unario &. El operador unario * permite la desreferencia de un variablepuntero; es decir, permite el acceso a lo apuntado por un puntero. Dado el ejemplo int x = 1, y = 2; int *ip; /* ip es un puntero a int */ ip = &x; /* y = *ip; /* *ip = *ip + 3; /* ip = NULL; /* ipapunta a x */ a y se le asigna lo apuntado por ip */ incrementa lo apuntado por ip, x */ ip apunta a direcc. especial (nada) */
La sintaxis de la declaración de un puntero imita a las expresiones enque la variable puede utilizarse; cada puntero apunta a un tipo específico de datos (con la excepción del puntero genérico void). La dirección especial NULL (o cero) indica que un puntero apunta a“nada” y es usada como centinela para establecer el fin de estructuras autoreferenciadas. Además, esta es retornada por la función de asignación de memoria, malloc, en el caso de no haber suficientememoria. El operador new, en cambio, aborta el programa cuando no tiene más memoria que dar.
Problemas a evitar en el uso de punteros
El uso descuidado de punteros lleva a programas incomprensibles yparticularmente a problemas difíciles de encontrar y reparar. Ausencia de inicialización de punteros Un problema común es el uso de punteros no inicializados. Mientras las variables externas (afunciones) o estáticas son inicializadas en cero por omisión, las variables locales (pertenecientes a funciones) no son inicializadas automáticamente. Por lo tanto punteros definidos dentro de funciones queno sean inicializados pueden contener cualquier valor (“basura”).
Curso: Programación 3 Instituto de Computación – Facultad de Ingeniería
Es un error desreferenciar un puntero con valor...
Regístrate para leer el documento completo.