Variable que almacena una dirección de memoria.
Una variable de este tipo "apunta" o hace
referencia a uno ó más objetos Desde su
declaración "sabe" el tipo de objetos a que hace
referencia.
dificultades
Programación avanzada, caótica y/o complicada
Programación más susceptible de errores muy
difíciles de depurar Dificultad para leer y
comprender código
beneficios
Generar elementos bajo demanda, i.e. asignación dinámica de
memoria Manipular y recorrer grandes espacios de memoria
Generar estructuras de datos complejas Parámetros de
entrada/salida para funciones, i.e. parámetros por referencia
Apuntadores: Operaciones Básicas
Nota:
OpFunciónEjemploExplicación(void *)Convierte entero a dirección(void *)0dirección nula*Para declarar apuntadoresint *p;p es un apuntador&Obtener dirección de..q=&i;q apunta a i=Asignar direcciónp=q=&i;p y q apuntan a i*Operador indirección*p=7;a donde apunta p almacena un 7++Incremento-dato++*p;incrementa el valor que apunta p++Incremento-apuntador*p++;incrementa apuntador p%pEspecificador tipo apuntadorprintf("%p",p);imprime dirección almacenada en p==igualdad entre apuntadoresp==qregresa falso si no son iguales!=desigualdad entre apuntadoresp!=qregresa falso si son iguales<menor, <= menor o igualp<=qregresa falso si p es mayor que q>mayor, >= mayor o igualp>=qregresa falso si p es menor que qsizeofEspacio que ocupa un dato en bytessizeof(void *)tamaño de cualquier apuntador
estructuras
Nota:
Estructura: Permite definir un tipo-derivado que asemeja un "registro" compuesto por campos/miembros heterogeneos. Para acceder cada miembro de una variable tipo estructura se usa el operador-punto. Puede usarse una lista de inicialización para inicializar una estructura.