Apuntadores

Páginas: 5 (1108 palabras) Publicado: 4 de diciembre de 2012
Definición de apuntador

Cuando se declara una variable, el compilador reserva un espacio de memoria para ella y asocia el nombre de esta a la direccion de memoria desde donde comienzan los datos de esa variable. Las direcciones de memoria se suelen describir como numeros en hexadecimal.


Un apuntador es una variable cuyo valor es la direccion de memoria de otra variable. Sedice que un apuntador “apunta” a la variable cuyo valor se almacena a partir de la direccion de memoria que contiene el apuntador. Por ejemplo, si un apuntador p almacena la direccion de una variable x, se dice que “p apunta a x ”.


Referenciacion

La referenciacion es la obtencion de la direccion de una variable. En C y C++ esto se hace a traves del operador ‘&’, aplicado a la variable ala cual se desea saber su direccion. Notese que se trata de un operador unario. Ejemplo:





Este codigo imprime un valor del estilo “0x4fffd34”. Este valor puede variar durante cada ejecucion del programa, debido a que el programa puede reservar distintos espacios de memoria durante cada ejecucion.

Declaracion de apuntadores

Para declarar un apuntador se especifica eltipo de dato al que apunta, el operador ‘*’, y el nombre del apuntador. La sintaxis es la siguiente:
*


A continuacion se muestran varios ejemplos:



[pic]

Asignacion de apuntadores

Se pueden asignar a un apuntador direcciones de variables a traves del operador de referenciacion (‘&’) o direcciones almacenadas en otros apuntadores. Ejemplos:

[pic]

Desreferenciacionde apuntadores

La desreferenciacion es la obtencion del valor almacenado en el espacio de memoria donde apunta un apuntador. En C y C++ esto se hace a traves del operador ‘*’, aplicado al apuntador que contiene la direccion del valor. Notese que se trata de un operador unario. Ejemplos:

[pic]

C++ ademas provee el operador binario ‘->’, utilizado para obtener campos de unregistro con un apuntador al mismo de una manera mas facil y legible. Muchos compiladores de C tambien soportan este operador. Ejemplo:






[pic]

Verificacion de tipos en apuntadores

Al igual que el resto de las variables, los apuntadores se enlazan a tipos de datos especıficos (apuntadores a variables de cierto tipo), de manera que a un apuntador solo se le pueden asignardirecciones de variables del tipo especificado en la declaracion del apuntador. Ejemplo:


Direcciones invalidas y la direccion NULL

Normalmente, un apuntador inicializado adecuadamente apunta a alguna posicion especıfica de la memoria. Sin embargo, algunas veces es posible que un apuntador no contenga una direccion valida, en cuyo caso es incorrecto desreferenciarlo (obtener el valor al queapunta) porque el programa tendra un comportamiento impredecible y probablemente erroneo, aunque es posible que funcione bien. Un apuntador puede contener una direccion invalida debido a dos razones:


1. Cuando un apuntador se declara, al igual que cualquier otra variable, el mismo posee un valor cualquiera que no se puede conocer con antelacion, hasta que se inicialice con algun valor(direccion). Ejemplo:

[pic]

2. Despues de que un apuntador ha sido inicializado, la direccion que posee puede dejar de ser valida sise libera la memoria reservada en esa direccion, ya sea porque la variable asociada termina su ambito o porque ese espacio de memoria fue reservado dinamicamente y luego se libero. Ejemplo:

[pic]

Si se intenta desreferenciar un apuntador que contiene unadireccion invalida pueden ocurrir cosas como las siguientes:

• Se obtiene un valor incorrecto en una o mas variables debido a que no fue debidamente inicializada la zona de memoria que se accede a traves de la direccion en cuestion. Esto puede ocasionar que el programa genere resultados incorrectos.

• Si casualmente la direccion es la misma de otra variable utilizada en el programa, o esta...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Apunte
  • Apuntes
  • apuntes
  • apuntes
  • apuntes
  • apuntes
  • Apunte
  • apuntes

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS