Apuntaodres

Páginas: 15 (3577 palabras) Publicado: 12 de abril de 2011
Apuntadores

Un apuntador es básicamente otra variable. La diferencia con una variable como las que conocemos, es de el apuntador contiene la dirección de otra variable, donde se encuentra la información. Este concepto es muy importante, en muchos programas se aplica para dar mayor potencia a los algoritmos que se implementan en ellos, a continuación se da una lista de ellos.
Antecedente
Esimportante recordar que cuando se declara una variable, a esta se le asocia una dirección en memoria, en la cual se almacena el algún dato deseado. Por ejemplo deseamos declarar una variable de tipo entero int. algun_numero; y si posteriormente le asignamos el valor 25 la situación en memoria quedaría de la siguiente forma:
Estado inicial
Nombre de la variable algun_numero
Dirección1502 1504 1506 1508
Contenido |... | BASURA |... |... |... |... | ..... | |

La dirección asociada a la variable algun_numero es 1502.
Y el contenido de la direccion 1502 no sabemos que contiene.

Despues de la asignacion
Nombre de la variable algun_numero
Dirección 1502 1504 1506 1508
contenido |... |25 |... |... |... |... | ..... | |

Y el contenido de la direccion 1502 es 25.

Empezando

¿Como definimos un apuntador?, de la misma forma que una variable, excepto que se adiciona un asterisco antes del nombre de la variable. Por ejemplo, el siguiente código crea dos apuntadores, apuntan a la dirección de una variable entera.
int* nNumeroUno;
int* nNumeroDos;

Note que 'p' es unprefijo en la palabra del nombre de las dos variables, solo se toma como convención para indicar que son variables de tipo apuntador.

Ahora, hagamos que estos apuntadores, apunten a algún objeto.

nNumeroUno = &algun_numero;
nNumeroDos = &algun_otro_numero;

El & (ampersand) es un símbolo que puede ser leído como 'la dirección de', y regresa la dirección en memoria que tiene asignada unavariable. En este ejemplo, nNumeroUno contiene la dirección de la variable algun_numero, esto es, nNumeroUno ahora apunta a algun_numero;
Ahora, ¿como podemos referenciar la dirección de algun_numero, desde nNumeroUno? El acceso al valor de algun_numero desde nNumeroUno, se hace de la siguiente manera *nNumeroUno. El * es el operador indireccion del apuntador, y este se puede leer como 'elcontenido de la memoria apuntada por'.
Ejemplo visual en la memoria

Si se tiene int nNumeroUno = 25; y que la estructura en memoria si las palabras tiene 16 bits, seria de la variable algun_numero es 25.
El contenido del apuntador nNumeroUno es 1502.
*nNumeroUno apunta a 25
de la siguiente forma:

Dirección 1502 1504 1506 1508
contenido |... | 25 |...|... |... |... | ..... | |

La dirección de la variable algun_numero(&algun_numero) es 1502.
El contenido
¿Como comprendemos estos conceptos? Con un ejemplo:
Ponga atención. Le recomiendo que lea bien los conceptos y lea con detenimiento la aplicación. Los apuntadores son complejos para una comprensión inmediata, así que, ármese de paciencia y no continué si no ha entendido el tema.
Este esun ejemplo cuyo contenido se expresa en lenguaje C, el cual es una extensión de C++.

#include

void main()
{
// declaración de variables:
int nNumero;
int *pApuntador;

// ahora, les damos un valor a cada una:
nNumero = 15;
pApuntador = &nNumero;

// escribimos en pantalla el valor que contiene la variable nNumero:
printf("nNumero es igual a : %d\n",nNumero);

// ahora, asignamos una valor a nNumero a trabes del apuntador pApuntador:
*pApuntador = 25;

// probamos que nNumero ha cambiado y lo probamos escribiendo el valor de la variable
// nNumero
printf("nNumero es igual a : %d\n", nNumero);
}

Lea y entienda lo que hace el programa, y compile el código de ejemplo. Si ya realizo el trabajo y lo entendió,...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS