Punteros

Páginas: 9 (2074 palabras) Publicado: 8 de noviembre de 2010
Algorítmica y Lenguajes de Programación Punteros Introducción a estructuras dinámicas

Punteros y estructuras dinámicas. Introducción
!

!

!

!

Las variables globales pertenecen al programa principal y existen desde que éste se inicia hasta que finaliza; también se las denomina estáticas. Las variables locales pertenecen a funciones y subrutinas y sólo existen durante la ejecucióndel subprograma; también se les denomina automáticas. Las variables cuya creación y destrucción no coincide con el inicio y el fin de un algoritmo o subprograma; es decir, es controlada por el programador se denominan variables dinámicas. La mayor parte de lenguajes de programación pueden manipular este tipo de variables.
2

Punteros y estructuras dinámicas. Punteros (i)
!

Un puntero es untipo simple que siempre está asociado a otro tipo (punteros a enteros, a reales, a registros, etc.) Se pueden ver los punteros como variables que almacenan direcciones de memoria; de aquí se deduce:
! ! !

!

Un puntero es un medio para acceder al contenido “real” apuntado por la variable. La declaración de un puntero no implica que exista contenido apuntado por el misma. Es necesario crear ydestruir explícitamente el contenido apuntado por punteros. Una dirección postal permite acceder al lugar físico indicado. El hecho de disponer de una dirección postal no garantiza que el lugar exista.

!

Se puede establecer una analogía entre los punteros y las direcciones postales:
! !

!

Para declarar variables de tipo puntero en la notación algorítmica se utiliza la sintaxissiguiente: variable ∈ puntero a tipo Por ejemplo, preal ∈ puntero a real
3

!

Punteros y estructuras dinámicas. Punteros (ii)
!

Una vez se declara un puntero pueden llevarse a cabo dos acciones básicas sobre el mismo:
!

Asignarle memoria para almacenar un dato del tipo al que apunta: crear. Eliminar la memoria que tiene asignada y con ella el dato apuntado: destruir.

!

crear (variablepuntero) destruir (variable puntero)
!

!

Es posible asignar a un puntero el contenido de otro; para hacer esto es necesario que la variable a la que vamos a asignar un valor no apunte a ningún dato pues en ese caso el dato original quedaría inaccesible. Así pues, sólo deberíamos asignar un puntero a otro si el puntero asignado no tiene memoria reservada. 4

Punteros y estructurasdinámicas. Punteros (iii)
!

Una vez se reserva memoria para un puntero es posible almacenar un dato en dicho espacio de memoria:
puntero↑ " expresión del tipo apuntado ↑

!

La siguiente sentencia asigna un valor a un puntero a real: preal↑ " 3.1416 ↑
5

Punteros y estructuras dinámicas. Punteros (iv)
!

Ejemplo sencillo:
variables x, y ∈ a entero pa, pb ∈ puntero a entero inicio x " 1 y" 2 crear(pa) pa↑ " 10 ↑ pb " pa escribir x + y escribir pa↑ + pb↑ ↑ ↑ destruir (pa) fin

6

Punteros y estructuras dinámicas. Punteros (v)
Variables del algoritmo

pa pb x y

inicio x " 1 y " 2

Variables del algoritmo

pa pb x y 1 2

crear(pa) pa↑ " 10 pb " pa

Variables del algoritmo

pa pb x y 1

inicio x " 1 y " 2

Variables del algoritmo

pa pb x y 1 2

10crear(pa) pa↑ " 10 ↑ pb " pa

Variables del algoritmo

pa pb x y 1 2

inicio x " 1 y " 2

Variables del algoritmo

pa pb x y 1 2

10

crear(pa) pa↑ " 10 pb " pa

7

Punteros y estructuras dinámicas. Punteros (vi)
Variables del algoritmo

destruir (pa)

pa pb x y 1 2

Al liberar la memoria asignada a pa la variable pb continua apuntando a la posición de memoria anteriormenteasignada que, tras la destrucción de la variable referenciada, no contiene ningún dato válido.

Por tanto, cuando a un puntero se asigna el contenido de otro puntero hay que cuidar que el puntero no termine referenciando posiciones sin datos válidos; para lograr esto existe una constante que se asigna a un puntero indicando que el referencia ninguna posición de memoria, nos referimos a NIL. En...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Punteros
  • Puntero
  • Punteros
  • Punteros
  • Punteros
  • Punteros
  • Los Punteros Laser
  • el puntero

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS