Вы находитесь на странице: 1из 11

Qu es un apuntador?

Un Apuntador es una variable que contiene una direccin de


memoria, la cual corresponder a un dato o a una variable
que contiene el dato. Los apuntadores tambin deben de
seguir las mismas reglas que se aplican a las dems
variables, deben tener nombre nicos y deben de declararse
antes de usarse.
Cada variable que se utiliza en una aplicacin ocupa una o
varias posiciones de memoria. Estas posiciones de memoria
se accesan por medio de una direccin.

En la figura el texto Hello sta guardado en memoria,
comenzando en la direccin 1000. Cada carcter ocupa un
espacio de direccin nico en memoria. Los apuntadores
proporcionan un mtodo para conservar y llegar a estas
direcciones en memoria. Los apuntadores facilitan el manejo
de datos, debido a que conservan la direccin de otra
variable o ubicacin de datos.
Por qu son Importantes los
Apuntadores?
Los apuntadores dan flexibilidad a los programas en C++ y
permiten que estos crezcan dinmicamente. Utilizando un
apuntador hacia un bloque de memoria que se asigna al
momento de ejecucin, un programa puede ser ms flexible
que uno que asigna toda su memoria de una sola vez.
Tambin, un apuntador es ms fcil de guardar que una
estructura grande o un objeto de una clase. Debido a que un
apuntador slo guarda una direccin, puede fcilmente
pasarse a una funcin. Una de las desventajas que pueden
presentar los apuntadores es que un apuntador sin control o
no inicializado puede provocar fallas en el sistema, adems
de que su uso incorrecto puede generar fallas muy complejas
de hallar.
Operadores de indireccion y direccin
Hay 2 operadores que se usan cuando trabajan con
direcciones en un programa C; el Operador de Indireccin (*)
y el de Direccin (&).
El Operador de Direccin ( &) regresa la direccin de una
variable. Este operador est asociado con la variable a su
derecha: &h; Esta lnea regresa la direccin de la variable h.
El Operador de Indireccin ( * ) trabaja a la inversa del
operador de Direccin. Tambin esta asociado con la variable
a su derecha, toma la direccin y regresa el dato que
contiene esa direccin. Por ejemplo, la siguiente lnea
determina la direccin de la variable h y luego usa el
operador de Indireccin para accesar la variable y darle un
valor de 42: *(&h)=42;


La declaracin de un puntero de manera general es:
tipo *nombre de apuntador;
Tipo : Especifica el tipo de objeto apuntado y puede ser
cualquier tipo.
Nombre de apuntador: Es el identificador del apuntador.
El espacio de memoria requerido para un apuntador, es el
nmero de bytes necesarios para especificar una direccin
de memoria, debiendo apuntar siempre al tipo de dato
correcto.
La Aritmtica de Apuntadores.
Solamente se pueden realizar operaciones de incremento y
decremento, y estos es deacuerdo a la longitud de su tipo de
base. Por ejemplo supngase que una mquina particular
utiliza direccionamiento de byte, un entero requiere 4 bytes y
el valor de la variable pi (declarada asi: int *pi) es 100, es
decir, se apunta al entero *pi en la localidad 100. Entonces el
valor de pi-1 es 96, el de pi+1 es 104 y el de pi+2 es 108. El
valor de *(pi-1) es el de los contenidos de los 4 bytes
96,97,98, y 99 , el de *(pi+1) es el del contenido de los byte
104, 105,106 y 107, y el de *(pi+2) es el entero que esta en
los bytes 108,109,110 y 111.
De manera parecida, si el valor de la variable pc (declarada
asi: char *pc; ) es igual a 100, y un carcter tiene un byte de
longitud, pc-1 refiere a la localidad 99, pc+1 a la 101 y pc+2 a
la 102.

Apuntadores a Funciones.
Un rea en la cual desempean un papel prominente los
apuntadores es el lenguaje C es la transmisin de
parmetros a funciones. Por lo comn, los parmetros se
transmiten por valor a una funcin en C, es decir, se copian
los valores transmitidos en los parmetros de la funcin
llamada en el momento en que se invoca. Si cambia el valor
de un parmetro dentro de la funcin, no cambia su valor en
el programa que la llama. Por ejemplo considrese el
siguiente fragmento y funcin de programa (el numero de
lnea es solo una gua en el ejemplo):
La lnea 2 imprime el nmero 5 y despus llama a funct. El
valor de "x", que es 5, se copia en "y" y comienza la ejecucin
de funct. Despus, la lnea 9 imprime el nmero 6 y regresa
funct. Sin embargo, cuando la lnea 8 incrementa el valor de
"y", el valor de "x" permanece invariable. As, la lnea 4
imprime el nmero 5, "x" y "y" refieren a 2 variables diferentes.
Si deseamos usar funct para modificar el valor de "x",
debemos de transmitir la direccin de "x" de la siguiente
manera:

La lnea 2 imprime nuevamente el nmero 5, y la lnea 3
llama a funct. Ahora, sin embargo, el valor transferido no es
el valor entero de "x" sino el valor apuntador "&x". Este es la
direccin de "x". El parmetro de funct no es ms y de tipo
int, sino py de tipo int * . (Es conveniente nombrar a las
variables apuntadores comenzando con la letra p para
recordar tanto que se trata de un apuntador) la lnea 8 ahora
aumenta al entero en la localidad py; py, sin embargo, no
cambia y conserva su valor inicial "&x". As, py apunta al
entero "x" de tal manera que cuando *py, aumenta x. La lnea
9 imprime 6 y cuando regresa funct, la lnea 4 imprime
tambin 6. Los apuntadores son el mecanismo usado en el
lenguaje C para permitir a una funcin llamada modificar las
variables de la funcin que llama.

Вам также может понравиться