Tecnico Informatica

Páginas: 6 (1252 palabras) Publicado: 12 de febrero de 2013
Instituto Politecnico Nacional

Estructura de Datos
2NV30
Melo Gonzalez Jose

Mendez Alvarez Pablo

-------------------------------------------------
Puntero

Un puntero o apuntador es una variable que da referencia a una región de memoria; en otras palabras es una variable cuyo valor es una dirección de memoria. Si se tiene una variable ' p ' de tipo puntero que contiene unadirección de memoria en la que se encuentra almacenado un valor ' v ' se dice que ' p ' apunta a ' v '.El programador utilizará punteros para guardar datos en memoria en muchas ocasiones, de la forma que se describe a continuación.
Para declarar un apuntador para una variable entera hacer:
int *apuntador;
Se debe asociar a cada apuntador un tipo particular. Por ejemplo, no se puedeasignar la dirección de un short int a un long int.
Para tener una mejor idea, considerar el siguiente código:




main()
{
int x = 1, y = 2;
int *ap;

ap = &x;

y = *ap;x = ap;

*ap = 3;
}
Cuando se compile el código se mostrará el siguiente mensaje: 
warning: assignment makes integer from pointer without a cast.
Con el objetivo de entender el comportamiento del código supongamos que la variable x esta en la localidad de la memoria 100, y en 200 y ap en 1000. Nota: unapuntador es una variable, por lo tanto, sus valores necesitan ser guardados en algún lado.
int x = 1, y = 2;
int *ap;

ap = &x;
100 | 200 | 1000 |
x | 1 | y | 2 | ap | 100 |
Las variables x e y son declaradas e inicializadas con 1 y 2 respectivamente, ap es declarado como un apuntador a entero y se le asigna la direcciónde x (&x). Por lo que ap se carga con el valor 100.
y = *ap;
100 | 200 | 1000 |
x | 1 | y | 1 | ap | 100 |
Después y obtiene el contenido de ap. En el ejemplo ap apunta a la localidad de memoria 100 -- la localidad de x. Por lo tanto, y obtiene el valor de x -- el cual es 1.
x = ap;
100 | 200 | 1000 |
x | 100 | y | 1 | ap | 100 |
Como se ha visto C no es muyestricto en la asignación de valores de diferente tipo (apuntador a entero). Así que es perfectamente legal (aunque el compilador genera un aviso de cuidado) asigna el valor actual de ap a la variable x. El valor de ap en ese momento es 100.
*ap = 3;
100 | 200 | 1000 |
x | 3 | y | 1 | ap | 100 |
Finalmente se asigna un valor al contenido de un apuntador (*ap).
Importante:Cuando un apuntador es declarado apunta a algún lado. Se debe inicializar el apuntador antes de usarlo. Por lo que:
main()
{
int *ap;
*ap = 100;
}
puede generar un error en tiempo de ejecución o presentar un comportamiento errático.
El uso correcto será:
main()
{int *ap;
int x;

ap = &x;
*ap = 100;
}
Con los apuntadores se puede realizar también aritmética entera, por ejemplo:
main()
{
float *flp, *flq;

*flp = *flp + 10;++*flp;

(*flp)++;

flq = flp;
}
NOTA: Un apuntador a cualquier tipo de variables es una dirección en memoria -- la cual es una dirección entera, pero un apuntador NO es un entero.
La razón por la cual se asocia un apuntador a un tipo de dato, es porque se debe conocer en cuantos bytes está...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Tecnico En Informatica
  • Tecnico Informatico
  • Tecnico en Informatica
  • tecnico en informatica
  • Tecnico En Informatica
  • Tecnico en informatica
  • tecnica en informatica
  • Técnico En Informatica

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS